我试图通过从保存我所有数据的常规数据结构切换到使用 redis 和集群来扩展我的 socket.io 应用程序。但是,我遇到了一些问题,因为在当前实现的某个时刻,我将套接字对象与其他属性一起存储在此数据结构 data[socket.id].socket = socket
中,因为在我的应用程序有时我需要执行 data[someId].socket.disconnect()
来手动断开套接字。
我知道我不能将对象直接存储到 redis 中,所以我尝试使用 JSON.stringify(socket)
但没有成功,因为 socket
是循环的。还有另一种方法可以仅使用 id
断开套接字吗?这样我就可以像这样存储 id
data[socket.id].id = socket.id
并且可以像 data[someId].id 那样调用它。 disconnect()
之类的。所以基本上我正在寻找一种方法来断开套接字而无需访问实际的套接字对象(我确实可以访问 io
对象)。
谢谢大家的帮助。
最佳答案
这似乎已经完成但没有在任何地方记录...需要的是使用 io.sockets.clients(someId).disconnect()
并且实际上会断开客户端,无论它连接到哪个实例。我将它们存储在我自己的阵列中,但实际上并不需要。
关于node.js - Socket.io断开连接和redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13497654/