我想在两个节点实例之间共享socket.io创建的空间,已经使用redis-store但无法在不同的节点实例上获取io.sockets.in(ROOM_ID).emit(MESSAGE,DATA);
我正在尝试 - 实例A -
io.set('store',...)
io.on('connection',function(socket){
socket.join(''room-ABCD);
});
要做广泛的事情,我可以使用
io.sockets.in('room-ABCD').emit('event',{data:{}});
但我需要从实例B执行类似的广播。
实例Bio.set('store')
上的与上面类似,但我无法使用io.sockets.in('room-ABCD').emit('event',{data:{}})
我的理解是 - redisStore会将socket + room信息放在redis中,以便其他进程可以访问。[如果我错了,请更正]。 现在,我没有得到如何在节点的其他进程中识别和获取此信息。
感谢。
答案 0 :(得分:0)
如果我很好地理解你的问题。你的起点是question 您可以从B访问A(主机不是redis)。所以在A中你可以推动你需要在A:
上发射LPUSH dataToEmit "{'room':'room-ABCD', 'data':'<escapeddata>'}"
在您的A进程中,您在dataToEmit上执行BRPOP,在回调中,您可以取消并发出您想要的内容
也许您也可以为1个房间发送1个密钥。不要忘记,你可以使用特定的数据库编号
我希望migth帮助你
答案 1 :(得分:0)