Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用3台服务器扩展node.js socket.io_Node.js_Redis_Socket.io - Fatal编程技术网

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

使用3台服务器扩展node.js socket.io,node.js,redis,socket.io,Node.js,Redis,Socket.io,我知道他们在网上有很多关于这个问题的问题和答案,但我无法让它发挥作用 我用node.js编写了一个服务器,并监听与socket.io的连接 现在,套接字可以在它们之间交换消息,就像聊天一样,我正在将传入的消息广播到服务器上的所有其他套接字 我想在3个不同的服务器上运行我的节点服务器,每个服务器都有不同的IP,让我们调用它们:SERVER1、SERVER2和SERVER3。 下面是我的困惑,如果我从连接到SERVER1的套接字发送消息,那么连接到SERVER2和SERVER3的套接字将如何看到此消

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

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

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

我想在3个不同的服务器上运行我的
节点
服务器,每个服务器都有不同的IP,让我们调用它们:
SERVER1
SERVER2
SERVER3
。 下面是我的困惑,如果我从连接到
SERVER1
的套接字发送消息,那么连接到
SERVER2
SERVER3
的套接字将如何看到此消息

我听说了
redistore
RabbitMQ
和其他东西,但我找不到一篇好的文章/帖子/书来解释如何正确操作


有人能帮我吗

我相信Redistore会自动为您实现这一点,这里有一个关于它的好帖子:

这是如何在内部完成的

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

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

我相信RedisStore会自动为您执行此操作,下面是一篇关于它的好文章:

这是如何在内部完成的

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

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

那么,你的意思是我的一台服务器应该只运行一个
redis
服务器,而我的另外两台服务器将运行我的
节点/socket.io
服务器代码并将所有收入消息订阅到
redis
服务器?是的,但是每个连接的对等方都应该发布和订阅Redis。那么,你的意思是,我的一台服务器应该只运行一台
Redis
服务器,而我的另外两台服务器将运行我的
节点/套接字.io
服务器代码,并将所有收入消息订阅到
Redis
服务器?是的,这是个想法,但每个连接的对等方都应该发布和订阅Redis。