【问题标题】:Socket io cluster on same port同一端口上的套接字 io 集群
【发布时间】:2017-06-29 23:35:41
【问题描述】:

我需要集群 socket.IO 服务器并希望对所有连接使用相同的端口
为了做到这一点,我创建了快速服务器,对其进行配置,然后告诉 socket.IO 监听这个服务器

if(cluster.isMaster){
  var cpuCount = require('os').cpus().length;
  for (let i = 0; i < cpuCount; i += 1) {
    cluster.fork();
} else {
  const credentials = {key: privateKey, cert: certificate};
  const app = express();
  const httpsServer = https.createServer(credentials, app);
  httpsServer.listen(8003);
  const io = SocketIO.listen(httpsServer);
}

但这不适用于多台服务器。当我尝试连接到套接字服务器时,我收到以下消息:
websocket.js?13d9:112 WebSocket connection to 'wss://...' failed: Error during WebSocket handshake: Unexpected response code: 400

但在服务器端事件监听器on("connection", () =&gt; {}) 有效。
当我渲染应用程序时,我有相同的代码来创建服务器集群,它工作得很好。
当只有一个 socket.IO 服务器侦听此端口时,套接字服务器工作。

如果有办法为集群中的一个端口创建多个 socket.IO 侦听器?

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    终于找到答案了

    Socket.io 正在执行多个请求以执行握手并与客户端建立连接。对于集群,这些请求可能会到达不同的工作人员,这将破坏握手协议。

    所以我决定为 socket.IO 使用sticky session lib,它完全符合我的要求

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-11
      • 2015-04-23
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      相关资源
      最近更新 更多