我知道他们在网上有很多关于这个问题的问题和答案,但我无法让它发挥作用。
我有一个用node.js
编写的服务器并且正在监听与socket.io
现在,套接字可以在它们之间交换消息,就像聊天一样,我将传入的消息广播到服务器上的所有其他套接字。
我想在3个不同的服务器上运行我的node
服务器,每个服务器都有不同的IP,让我们称之为:SERVER1
,SERVER2
和SERVER3
。
这是我的困惑,如果我从连接到SERVER1
的套接字发送消息,连接到SERVER2
和SERVER3
的套接字将如何看到此消息?
我听说过RedisStore
,RabbitMQ
和其他内容,但我找不到一篇好文章/帖子/书籍,可以解释我该怎么做...
答案 0 :(得分:4)
我相信RedisStore会自动为您完成此操作,这里有一篇很好的帖子:http://www.ranu.com.ar/2011/11/redisstore-and-rooms-with-socketio.html
这是如何在内部完成的?
正如您所听到的,Redis,RabbitMQ,ZeroMQ等具有pub-sub功能,这意味着您可以订阅频道并在其上发布信息(发送给所有连接的对等方):
https://github.com/mranney/node_redis#publish--subscribe
因此服务器A,B和C订阅了相同的频道。当连接到服务器A的客户端想要为连接到聊天室“js”的所有用户发送消息时,他向服务器A发送消息,服务器A在“js”频道上发布消息。 所有其他服务器都会收到该消息并将其广播给所有客户端。