我正在構建一個node.js應用程序。當用戶連接時,他們將其狀態作爲在線傳輸。當它們斷開連接時,狀態會切換到脫機狀態。另外,當用戶連接時,他會得到他的連接列表,以及這些朋友的狀態(在線或離線)。好的,很好,沒有問題。如何實現一個Node.js廣播給多個客戶端
但我遇到的麻煩是如何動態地向用戶發送的FREIND的狀態,而我參與的登錄所以,操作步驟如下所示:。
- 我登錄
- 我得到了我所有的朋友列表:用戶1,用戶2,用戶3
- 我得到狀態的列表中的所有用戶:用戶1:在線,用戶2:在線用戶3:下線
- USER1註銷
- 我如何動態獲取用戶1的狀態變化?
請記住,這些用戶沒有互相連接,並且還要記住,用戶的狀態需要傳送給所有其他用戶,並將他作爲好友。假設user1有100個朋友,我就是其中之一。我(與其他99一起)需要獲取user1現在處於脫機狀態的通知。還要注意,這些人可能不在同一臺物理服務器上(多臺服務器每臺都處理X個連接)。解決這個問題最好的理論方法是什麼?
我能想出的唯一答案是我將狀態保存在數據庫中,並且該節點將查詢數據庫,並且狀態更改時會更新。但是看起來很瘋狂,節點必須監視db的更改,這是無法擴展的。有一個更好的方法來做到這一點 - 也許是一個明顯的方式,我錯過了它。
做一些關於「發佈/訂閱」的閱讀。 – ebohlman