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.
source share