套接字io集群在同一个端口上

时间:2017-06-29 10:19:25

标签: node.js express socket.io

我需要集群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", () => {})工作 当我渲染应用程序时,我有相同的代码用于创建服务器群集,它工作得很好 当只有一个socket.IO服务器监听此端口时,套接字服务器工作。

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

1 个答案:

答案 0 :(得分:2)

终于找到了答案

  

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

所以我决定使用sticky session lib for socket.IO,它完全按照我想要的方式工作

相关问题