sharing IO object in multiple node instances

后端 未结 2 651
一个人的身影
一个人的身影 2021-01-25 02:55

I want to share rooms created by socket.io between two node instances, already using redis-store but unable to get io.sockets.in(ROOM_ID).emit(MESSAGE,DATA) on different node in

相关标签:
2条回答
  • 2021-01-25 03:31

    Answering to the queries related to the questions - one,two and this one.

    Exact point where I need to concentrte was - Joinig the room.

    I was using client_socket.join("room_name"), but it pushes the client socket to the room.

    Now, try io.sockets.socket(client_socket.id).join("room_name").

    This pushes the room members to the redis and now they are accessible in another node instance.

    in process B io.sockets.in("room_name").emit("event_name",{data:"1"}) works.

    0 讨论(0)
  • 2021-01-25 03:50

    If i good understanding your problem. youre start point was this question You can probably access to A from B (host not redis). So in A you can push that's you need to emit on A:

    LPUSH dataToEmit "{'room':'room-ABCD', 'data':'<escapeddata>'}" 
    

    and on your A process you perform a BRPOP on dataToEmit and on the callback you can unjsonize and emit that you want

    may be you could also dispatch to 1 key for 1 room . Don't forget that's you can use a specific data base number for this stuff

    I Hope that's migth help you

    0 讨论(0)
提交回复
热议问题