【问题标题】:Scale node.js socket.io with 3 servers使用 3 个服务器扩展 node.js socket.io
【发布时间】:2012-05-22 14:00:01
【问题描述】:

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

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

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

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

我听说过RedisStoreRabbitMQ 和其他东西,但我找不到可以解释我如何正确操作的好文章/帖子/书籍...

有人可以帮帮我吗?

【问题讨论】:

    标签: node.js redis socket.io


    【解决方案1】:

    我相信 RedisStore 会自动为您执行此操作,这里有一篇关于它的好帖子:http://www.ranu.com.ar/2011/11/redisstore-and-rooms-with-socketio.html

    这是如何在内部完成的?

    正如您所听说的,Redis、RabbitMQ、ZeroMQ 等具有发布-订阅功能,这意味着您可以订阅频道并在频道上发布信息(向所有连接的对等方):

    https://github.com/mranney/node_redis#publish--subscribe

    所以服务器 A、B 和 C 订阅了同一个频道。例如,当连接到服务器 A 的客户端想要为连接到聊天室“js”的所有用户发送消息时,他向服务器 A 发送消息,服务器 A 在“js”频道上发布消息。 其余所有服务器都会收到该消息并将其广播给所有客户端。

    【讨论】:

    • 那么,你的意思是我的一台服务器应该只运行redis 服务器,而我的另外两台服务器将运行我的node/socket.io 服务器代码并将所有收入消息订阅到redis 服务器?
    • 是的,想法是这样,但是每个连接的对等点都应该发布和订阅 Redis。
    猜你喜欢
    • 2015-08-29
    • 2012-04-11
    • 2018-12-15
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2012-10-12
    • 2016-11-08
    • 1970-01-01
    相关资源
    最近更新 更多