gpt4 book ai didi

node.js - 跨多个 Amazon EC2 实例水平扩展 socket.io

转载 作者:IT王子 更新时间:2023-10-29 06:04:25 25 4
gpt4 key购买 nike

让一切都设置好并与运行我的 Node 应用程序的 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 发出消息时,消息仅从发起 Node 服务器广播。

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

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

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

让另一个服务器作为服务器 1 和服务器 2 从中发送和接收套接字消息的套接字发射器。

不太确定哪个选项是最好和正确的方法,我们将不胜感激。

最佳答案

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

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

关于node.js - 跨多个 Amazon EC2 实例水平扩展 socket.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39693166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com