どのようにsocket.io 2.02.0 socket.io取得接続されたクライアントは、
を使用して部屋内のすべての接続されたクライアントを取得することができます私はすでに同様の問題の解決策を試してみました: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);
});
これはうまくいくので、これを正しい答えとして受け入れました。あなたは1つのノードサーバーを実行するとき、それは過度のように感じる..あなたは接続されたクライアントのリストを持つためだけに余分なredisサーバーを実行する必要があります。もっと簡単な解決策があることを願っていますが、私はこの問題に取り組んでいきます。私たちは、複数のノードサーバーにアップスケールする準備をしています。 –
どのようにして、ソケットIDを持つユーザー情報を追跡していますか? redisキー値のペアを使用することはできますが、サーバーが再起動してクライアントが再接続すると、新しいソケットIDが作成され、古いものが残ったままになり、メモリリークが発生します。 – Koder