簡體   English   中英

Node.js Socket.IO聊天應用程序群集服務器

[英]Node.js Socket.IO Chat Application Cluster Server

實際上,我已經嘗試使用socket.io創建聊天應用程序。對於單個服務器,它工作正常。 但是當我嘗試使用群集服務器創建對我不起作用時,出現錯誤,例如客戶端未握手,客戶端應重新連接,群集 Web套接字中的 socket.io 無效

這些錯誤不斷出現在控制台中

有人可以幫助我繼續進行socket.IO的群集服務器

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;
var sio = require('socket.io');
var server;

 if (cluster.isMaster) {


 for (var i = 0; i < numCPUs; i++) {
     cluster.fork();
 }

 cluster.on('online', function(worker) {
   console.log('A worker with #' + worker.id);
 });

 cluster.on('listening', function(worker, address) {
  console.log('A worker is now connected to ' + address.address + ':' + address.port);
 });


  cluster.on('exit', function(worker, code, signal) {
  console.log('worker ' + worker.process.pid + ' died');
   });
 }
else {
  server =  http.createServer(function(req, res) {
  res.writeHead(200);
  res.end('hello world\n');
  }).listen(8000);

 _socketServer();
}

var _socketServer = function() {
 io = sio.listen(server);
 io.set("log level", 1);

  io.sockets.on("connection", function (socket) {
 });
 });

我收到這樣的錯誤

客戶端不握手客戶端應重新連接,群集中的socket.io

提前謝謝。

當您將Socket.io與“群集”模塊一起使用時,會發生此問題-當客戶端套接字轉發到與其開始握手時使用的套接字不同的客戶端時,會發生-這意味着一個工作者處理了握手的前半部分,並且由另一名工人處理后半部分(因此,實際上,任何一名工人均未處理完整的握手-因此握手無效)。 您應該使用sticky-session模塊來解決此問題: https : //github.com/indutny/sticky-session

另外,如果您想開箱即用地在多個內核上運行的解決方案,則可以嘗試SocketCluster: http ://socketcluster.io/-免責聲明:我是主要作者。 這是GitHub頁面: https : //github.com/topcloud/socketcluster

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM