我已经为聊天应用程序
创建了代码上面的代码适用于单个服务器,但对于集群服务器,它会出错 客户端不是握手客户端应重新连接,集群中的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
答案 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;