【发布时间】:2016-08-25 11:49:39
【问题描述】:
我必须设置 Sails 应用程序,以便我可以在多个端口上建立 socket.io 连接 - 例如在端口 3999 上进行身份验证和在端口 4999 上进行数据同步。
有什么办法吗?
【问题讨论】:
标签: socket.io sails.js sails.io.js
我必须设置 Sails 应用程序,以便我可以在多个端口上建立 socket.io 连接 - 例如在端口 3999 上进行身份验证和在端口 4999 上进行数据同步。
有什么办法吗?
【问题讨论】:
标签: socket.io sails.js sails.io.js
我昨天问了一个类似的问题,你的问题似乎也和我的相似,这就是我要实现的。
鉴于您将拥有多个在不同端口上工作的实例,它们将无法直接相互通信,这会破坏 websocket 功能。
看来there are multiple solutions to this(粘性会话与使用 Redis 的 pub/sub 功能),我选择了 Redis。有一个名为socket.io-redis 的模块。你还需要emitter module,就在这里。
如果您选择该路线,那么无论您在运行应用程序的服务器上有多少台服务器(具有多个实例的多个服务器)或多个实例,它都将毫无问题地运行,这要归功于 Redis。
至少我目前知道的就是这样,找了几天,还没试过。
更不用说,您可以使用 Nginx 进行负载平衡,如下所示。 (从 socket.io 文档复制)
upstream io_nodes {
ip_hash;
server 127.0.0.1:6001;
server 127.0.0.1:6002;
server 127.0.0.1:6003;
server 127.0.0.1:6004;
}
【讨论】: