node.js - nodejs cluster socket.io nginx configuration -
node.js - nodejs cluster socket.io nginx configuration -
i running nodejs cluster socket.io library. proxing request via nginx server. websocket connections working fine in of cases not working polling transport protocol in socket.io.
here's pseudo code:
if (cluster.ismaster) { // fork workers. (var = 0; < numcpus-1; i++) { cluster.fork(); } else{ var server = http.createserver(function(request, response){ console.log('connecting server'); response.end(); }); server.listen(port); var socket_io = require('socket.io')(server); var redis_adapter = require('socket.io-redis'); //config.redis.ip,config.redis.port socket_io.adapter(redis_adapter({ host: config.redis.ip, port: config.redis.port })); socket_io.use(function(socket, next){ }); socket_io.on('connection', function (socket) { };
would know there issue in code. need utilize sticky-session .if yes right way utilize in case.
websockets sticky default.
the problem polling transport connection request going worker1 whereas handshake or subsequents requests might land other worker..lets worker2. , worker2 have no info socket connection established worker1.
if socket.io server direct deployment, can utilize sticky-session(http://socket.io/docs/using-multiple-nodes/).
but if socket.io server behind proxy server, sticky session might not work in efficient manner sticky-server balances request per remote ip address. , in case of proxy server, request fall on same worker , rest of workers ideal.
in case, 1 possible solution start socket.io workers on multiple ports , cluster balancing in nginx/apache. contact farther help.
node.js sockets nginx websocket socket.io
Comments
Post a Comment