【发布时间】:2017-02-03 05:25:54
【问题描述】:
在运行我的节点应用程序的 2 台 Amazon EC2 服务器上进行所有设置并正常工作。当前位于 Application Load Balancer 后面。
我正在使用这样的代码发出套接字消息
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 发送和接收套接字消息的套接字发射器。
不太确定哪个选项是最好和正确的方法,我们将不胜感激。
【问题讨论】:
标签: node.js sockets amazon-ec2 redis