Node.js使用Socket.IO聊天应用程序集群服务器

时间:2014-06-06 07:17:09

标签: node.js

我已经为聊天应用程序

创建了代码

上面的代码适用于单个服务器,但对于集群服务器,它会出错 客户端不是握手客户端应重新连接,集群中的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) { });
});

错误:client not handshaken client should reconnect, socket.io in cluster

2 个答案:

答案 0 :(得分:0)

尝试在群集中使用redis服务器并订阅redis服务器公开的事件。这是解决这个问题的解决方案之一。

编辑: 使用的一些代码示例/体系结构/框架以及所有其他信息将非常有用

代码:

嗨,大家好,

其实我正在尝试使用socket.io

创建聊天应用程序

对于单个服务器它工作正常,但是当我尝试使用群集服务器创建时,它 不为我工作

引发错误: 客户端没有握手客户端应重新连接,群集中的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

答案 1 :(得分:0)

您可以使用这种方式存储所有工作人员的套接字信息:

var ClusterStore = require('strong-cluster-socket.io-store')(io);
io = require("socket.io").listen(server)
io.set({'store': new ClusterStore()});

使用npm安装模块&strong-cluster-socket.io-store&#39;