我正在使用节点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。
提前致谢。
答案 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