跨多个Amazon EC2实例水平缩放socket.io

使用运行我的节点应用程序的2个Amazon EC2服务器正确安装并正常工作。 目前坐在应用程序负载平衡器后面。

我使用这样的代码发送套接字消息

const ioredis = require('socket.io-redis'); io = require('socket.io')(server); io.adapter(ioredis({ host: 'localhost', port: 6379 })); io.to('roomName').emit('message', data); 

但是,使用socket.io发送消息时,消息仅从始发节点服务器广播。

服务器1发出一个socket.io消息 – >连接到服务器1的任何人都会听到该消息,但是连接到服务器2的任何人都不会。

服务器2发出一个socket.io消息 – >连接到服务器2的任何人都会听到该消息,但连接到服务器1的任何人都不会。

我需要帮助的是如何从服务器1发出socket.io消息,并将其中继到所有其他服务器,也可能通过在单独的服务器上使用单个redis实例?

要么

将另一台服务器作为服务器1和服务器2发送和接收套接字消息的套接字发射器。

不太确定哪个选项是最好的和正确的方式去,任何帮助将不胜感激。

我设法通过创build第三台服务器来解决这个问题,在其上安装Redis并将所有其他服务器设置为使用这个Redis的单个实例。

现在套接字消息被广播到所有服务器,而不pipe源服务器。