Socket.io断开连接和redis

sca*_*les 4 scalability redis node.js socket.io

我试图通过从保存所有数据的常规数据结构切换到使用 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对象)。

感谢大家的帮助。

sca*_*les 5

似乎这已经完成了,但没有在任何地方记录...io.sockets.clients(someId)获取套接字对象,无论它被调用哪个实例,所以唯一需要的是使用io.sockets.clients(someId).disconnect()并实际断开客户端,无论它连接的实例如何到。我将它们存储在我自己的数组中,但实际上并不需要。