如何使用群集实现socket.io?

时间:2019-01-11 09:59:17

标签: node.js socket.io cluster-computing

我一直在使用socket.io开发实时应用程序。 使用群集时,我的socket.io程序无法正常工作。

我的代码:

var cluster = require('cluster');
var cpuNum = require('os').cpus().length;
var http = require('http');

var port=5001, server;

var realTimeCount = require('.app/rT_event_count');


if (cluster.isMaster) {
  // fork workers
  logger.infoLogger('Number of fork workers: ' + cpuNum);

  for (let i = 0; i < cpuNum; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    logger.errorLogger('worker ' + worker.process.pid + ' died');
  });
} else {

  var app = router.getRouter();

  server = http.Server(app);
  server.listen(port,function(){
    console.log('listening on *:'+port);
  });

  //the following function consist of socket io program
  realTimeCount.getRealTimeUnseenEventCount(server);

}

我收到了套接字连接消息,但是没有收到从客户端发送到服务器端的任何事件。

但是,我的程序无需使用群集即可正常运行。但是我想用集群来实现它。

我的问题是为什么我没有从客户端得到任何事件?

我看到了一个问题的答案:

  

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

这是正确的吗?告诉我如何解决这个问题?

0 个答案:

没有答案