使用节点集群持续连接/断开与套接字连接

时间:2016-07-28 07:13:26

标签: javascript node.js sockets cluster-computing

我正在使用节点4.2并且需要构建将通过套接字连接到客户端的服务器。 由于应用程序不是Web,因此我的套接字连接断开并连续重新连接。

但请在下面查看服务器代码:

var cluster = require('cluster');
var clusterWorkerSize = require('os').cpus().length;
var sticky = require('sticky-session');

var server = require('http').createServer(function(req, res) {
res.end('worker: ' + cluster.worker.id);
});

if (!sticky.listen(server, 14001)) {
console.log('master');
server.once('listening', function() {

console.log('server started on 14001 port');

});

} else {

console.log('worker: ' + cluster.worker.id);
var io = require('socket.io')(server);

io.on('connection', function(socket){

    var userID = socket.id;
    console.log("connected "+userID);

    socket.on('disconnect', function() {

        console.log('Got disconnect!'+userID);
    });

});

}

但请在下面查看客户端代码:

var io = require('socket.io-client');
var serverUrl = 'http://localhost:14001';
var conn = io.connect(serverUrl);

conn.on('connect', function () {
var sessionId = conn.io.engine.id;
console.log(sessionId);

});

如果我做错了,请指导我。 注意:我正在初始化worker中的socket io。

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试一下:

服务器端:

var io = require('socket.io')(server {transports: [ 'websocket', 'polling' ] });

客户端:

var conn = io.connect(serverUrl {transports: [ 'websocket', 'polling' ] });

如果您使用的是Android客户端:

IO.Options opt = new IO.Options();    
String[] trspt = {"websocket", "polling"};
opt.transports = trspt;
conn = IO.socket(serverUrl, opt);

字体:https://medium.com/@codeandcam/clustering-an-express-socket-io-server-with-pm2-789d11865f95