Skip to content

Instantly share code, notes, and snippets.

@hoangsetup
Forked from uvshah/Socket.IO 0.9 Clustering
Created December 23, 2016 03:01
Show Gist options
  • Save hoangsetup/c200fc14ed86d334d96a19b8e3ad0206 to your computer and use it in GitHub Desktop.
Save hoangsetup/c200fc14ed86d334d96a19b8e3ad0206 to your computer and use it in GitHub Desktop.
Socket.IO Clustering
//I am using windows OS and I have installed radis server from https://github.com/rgl/redis/downloads
//Using Socket.IO 0.9
var cluster = require('cluster');
var redis = require("socket.io/node_modules/redis");
if (cluster.isMaster) {
var cpuCount = require('os').cpus().length;
for (var i = 0; i < cpuCount; i += 1) {
cluster.fork();
}
cluster.on('exit', function (worker) {
console.log('Worker ' + worker.id + ' died :(');
cluster.fork();
});
} else {
var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app);
console.log('Worker ' + cluster.worker.id + ' running!');
var RedisStore = require('socket.io/lib/stores/redis')
, pub = redis.createClient()
, sub = redis.createClient()
, client = redis.createClient();
var io = require('socket.io').listen(server, {
'store': new RedisStore({
redisPub: pub
, redisSub: sub
, redisClient: client
}),
});
io.sockets.on('connection', function (socket) {
console.log("onconnect " + cluster.worker.id);
});
server.listen(8088);
}
//I am using windows OS and I have installed radis server from https://github.com/rgl/redis/downloads
//Using Socket.IO 1.0
var sticky = require('sticky-session');
sticky(function() {
var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io').listen(server);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));
io.sockets.on('connection', function (socket) {
console.log("onconnect" + process.pid);
});
return server;
}).listen(8088, function() {
console.log(process.pid +' server started on 8088 port');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment