Node cluster with socket.io and expressjs

Here is my server code:

I am trying to use a cluster with socket.io and expressjs. I am testing this on my quad desktop.

var cluster = require('cluster') var numCPUs = require('os').cpus().length if (cluster.isMaster) { // Fork workers. for (var i = 0; i < numCPUs; i++) { cluster.fork() } console.log(new Date()); } else { // get required modules var connect = require('connect'); var express = require('express'); var mongo = require('mongodb'); var MongoStore = require('connect-mongo')(express); var server; var redis = require('redis'); var http = require('http'); // create server object app = exports.module = express(); function configureServer() { //configure environments app.configure('production', function() { app.use(express.errorHandler()); }); //configure server instance app.configure(function() { app.use(express.compress()) // set jade as default view engine app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.cookieParser("refdgfd")); app.use(express.methodOverride()); app.use(app.router); // use express logger }); loadModules(); } var server = http.createServer(app).listen(80); socket = require('socket.io').listen(server); var RedisStore = require('socket.io/lib/stores/redis') , pub = redis.createClient() , sub = redis.createClient() , client = redis.createClient(); socket.set('store', new RedisStore({ redisPub : pub , redisSub : sub , redisClient : client })); socket.configure(function() { socket.set('log level', 1); socket.set('transports', ['websocket']); }); configureServer(); } 

Is there something that seems really wrong?

Magazines show that everything happens 4 times. Which seems right. But my socket.io channel users also indicate that whenever I connect to the page, I connect 4 times (create 4 user sockets). This seems wrong. How to fix it, and is there something wrong with my code. Thanks.

+6
source share
1 answer

socket.io does not currently have full support for node.js cluster . It works fine for me with websocket transport, but xhr-pooling fails. You can touch these problems more: # 939 , # 917 . The problem is that the xhr-pooling request might get into a thread different from the one that was originally allowed.

+3
source

Source: https://habr.com/ru/post/923525/


All Articles