【问题标题】:Enabling sockets.io in sails to run on multiple ports在sails 中启用sockets.io 以在多个端口上运行
【发布时间】:2016-08-25 11:49:39
【问题描述】:

我必须设置 Sails 应用程序,以便我可以在多个端口上建立 socket.io 连接 - 例如在端口 3999 上进行身份验证和在端口 4999 上进行数据同步。

有什么办法吗?

【问题讨论】:

    标签: socket.io sails.js sails.io.js


    【解决方案1】:

    我昨天问了一个类似的问题,你的问题似乎也和我的相似,这就是我要实现的。

    鉴于您将拥有多个在不同端口上工作的实例,它们将无法直接相互通信,这会破坏 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;
    }
    

    【讨论】:

    • 最后在bootstrap.js var customAppServer = http.createServer(sails.hooks.http.app)中创建了另一个httpserver; var customAppSocket = io(customAppServer); customAppServer.listen('3001'); module.exports.customAppSocket = customAppSocket; customAppSocket.on('connection', function(socket) {sails.config.customRoutes.setListeners(socket); socket.emit('connected', { hello: 'world' }); });
    猜你喜欢
    • 2015-02-10
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    相关资源
    最近更新 更多