I'm trying to use the sticky-session module to run a socket server on multiple cores on the same machine.
I can get it to work, but I I get multiple duplicate console.output statements from within io.sockets.on('connectection'...
This works, i.e. without the duplicate console.log outputs, if I remove sticky-session.
I have shortened the code somewhat to try and make it as succinct as possible.
Server.js:
var express = require('express'),
api = require('./routes/api'),
sticky = require('sticky-session');
//SET UP SERVER CONSTS (USE var INSTEAD OF const DUE TO BEST PRACTISE)
var args = process.argv.slice(2);
var PORT = args[0];
sticky(function() {
var app = module.exports = express();
app.configure(function(){
app.use(express.bodyParser());
});
var server = require('http').createServer(app)
//START SOCKET SERVER
io = require('./messaging/sockets')(server);
return server;
}).listen(PORT, function() {
console.log('Socket server listening on port ' + PORT);
});
messaging/socket.js:
var User = require('../models/usermodel.js').UserModel;
module.exports = function(server) {
io = require('socket.io').listen(server);
socketstore = require("./socketstore");
messaging = require("./messaging");
io.sockets.on('connection', function (socket) {
var username = socket.decoded_token.username;
console.log("adding username " + username + " to socketstore");
User.findOne(criteria, function(err, user) {
socketstore.addSocketToStore(user,socket);
socket.on('disconnect', function () {
socketstore.deleteSocketById(user)
});
});
});
return io;
}
Why am I getting multiple console.log() outputs?