你怎么能使用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