你怎麼能使用socket.io 2.0socket.io 2.0獲取連接的客戶端在一個房間裏
我已經嘗試過類似的問題的解決檢索所有連接的客戶端在一個房間:https://stackoverflow.com/a/45160538/2189845
var sockets = io.in("room_name")
Object.keys(sockets.sockets).forEach((item) => {
console.log("TODO: Item:", sockets.sockets[item].id)
})
但是,無論房間如何,這都會在所有套接字連接上循環。所以,上面的代碼給出了相同的結果:
Object.keys(io.sockets.sockets).forEach((item) => {
console.log("general socket: Item:", item);
});
這個工程,所以我接受這是正確的答案。當你只運行一個節點服務器時,感覺就像是過度殺毒。你需要運行一個額外的redis服務器,僅用於擁有連接客戶端的列表。希望有一個更簡單的解決方案,但我會去爲這一個。它讓我們準備升級到多個節點服務器我猜。 –
如何使用套接字ID跟蹤用戶信息?可以使用redis鍵值對,但如果服務器重新啓動並且客戶端重新連接,則會創建一個新的套接字標識,並且舊套接字標識將保留在redis中,導致內存泄漏。 – Koder