簡體   English   中英

Laravel Echo 和 Laravel Echo 服務器和套接字:區分服務器端的加入和離開事件

[英]Laravel Echo and Laravel Echo server and socket: Distinguish join and leave events in server side

我正在為移動應用程序構建 Web 服務。 我需要知道哪些移動用戶在線。 我通過 Laravel echo-laravel echo server-socket io 和 redis 實現了這個。 一切正常,客戶端通過在線渠道監聽事件。

問題是,離開和加入事件在客戶端,而當用戶離開頻道時,我需要從存儲在Redis的列表中刪除它,實際上我需要知道哪個加入或離開發生在服務器端不是客戶端,以便能夠更新 Redis 中的在線用戶。

我怎樣才能做到這一點?

我的解決方案

解決方案1

如果服務器端有返回在線用戶的here方法的任何實現,它可能會起作用,實際上我可以將我的列表與here進行比較以獲取最新更新。

解決方案2

當用戶發生事件時,如果該用戶已存在於我的 Redis 列表中,則顯然是離開事件,因為用戶在任何時候都只能在線一次,如果該用戶不存在於列表中,所以它必須是一個連接,因為如果它已經在列表中,沒有人可以加入。

提前致謝。

您應該使用Presence Channels來實現此功能。

觀看此 Laracast 第 8 集視頻,您可以使用離線用戶列表調整那里的示例。

我建議使用 channel here將在線用戶的user.id推送到participants數組列表中, joining ,如視頻所示leaving鈎子。

在輸出完整的users列表時,您可以使用包含檢查他們是否在線。


const participants = [4, 34, 57, 70]

for (user of users) {

  if( participants.includes(user.id) ) {
   // The user is online, Set an online style or something
  }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM