我想通过从保存所有数据的常规数据结构切换到使用redis以及集群来使我的socket.io应用程序扩展。但是,我遇到了一些问题,因为在当前实现的某个时刻,我将套接字对象与其他属性一起存储在此数据结构data[socket.id].socket = socket
中,因为在我的应用程序中有时需要执行data[someId].socket.disconnect()
来手动断开套接字。Socket.io断开连接和redis
我知道我不能直接将对象存储到redis中,所以我尝试使用JSON.stringify(socket)
没有成功,因为socket
是循环的。是否有另一种方法只使用id
断开套接字?这样我可以存储id
像这样data[socket.id].id = socket.id
也许叫它data[someId].id.disconnect()
什么的。所以基本上我正在寻找一种方法来断开套接字而无需访问实际套接字对象(我可以访问io
对象)。
谢谢大家的帮助。
,无论实例如何,你的意思是,你正在使用RedisStore集群作为socket.io的存储吧?这仍然有效吗?也someId是socket.id? –
@RanaDeep yep,在一台多核机器上使用群集,所以我产生了几个应用程序的工作人员,并且可以断开与工作人员1连接的套接字,从工作人员5中断开。 – scanales