一尘不染

在多个节点实例中共享IO对象

redis

我想在两个节点实例之间共享由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执行类似的广播。

在实例B io.set('store')上与上面类似,但我无法使用io.sockets.in('room- ABCD').emit('event',{data:{}})

我的理解是-redisStore会将socket +
room信息放入redis,以便其他进程可以访问它。[如果我错了,请更正]。现在,我不知道如何在节点的其他过程中识别和获取此信息。

谢谢。


阅读 281

收藏
2020-06-20

共1个答案

一尘不染

回答与问题有关的查询- 和一。

我需要集中的确切地点是-Joinig房间。

我正在使用client_socket.join("room_name"),但是它将客户端套接字推到房间。

现在,尝试io.sockets.socket(client_socket.id).join("room_name")

这会将会议室成员推送到Redis,现在可以在另一个节点实例中访问它们。

在过程B中io.sockets.in("room_name").emit("event_name",{data:"1"})工作。

2020-06-20