我一直在使用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正在执行多个请求以执行握手并建立与客户端的连接。在集群中,这些请求可能到达不同的工作人员,这将破坏握手协议。
这是正确的吗?告诉我如何解决这个问题?