使用3台服务器扩展node.js socket.io

时间:2012-05-22 14:00:01

标签: node.js redis socket.io

我知道他们在网上有很多关于这个问题的问题和答案,但我无法让它发挥作用。

我有一个用node.js编写的服务器并且正在监听与socket.io

的连接

现在,套接字可以在它们之间交换消息,就像聊天一样,我将传入的消息广播到服务器上的所有其他套接字。

我想在3个不同的服务器上运行我的node服务器,每个服务器都有不同的IP,让我们称之为:SERVER1SERVER2SERVER3。 这是我的困惑,如果我从连接到SERVER1的套接字发送消息,连接到SERVER2SERVER3的套接字将如何看到此消息?

我听说过RedisStoreRabbitMQ和其他内容,但我找不到一篇好文章/帖子/书籍,可以解释我该怎么做...

是的,有人能帮帮我吗?

1 个答案:

答案 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”频道上发布消息。 所有其他服务器都会收到该消息并将其广播给所有客户端。