Node.js multi-threading et la Douille.io

Je suis à la recherche pour obtenir Socket.io de travail multi-thread avec natif d'équilibrage de la charge ("cluster") dans Node.js v. 0.6.0 et versions ultérieures.

De ce que je comprends, Socket.io utilise Redis pour stocker ses données internes. Ma compréhension est ceci: au lieu de pondre un nouveau Redis exemple pour tous les travailleurs, nous voulons forcer les travailleurs à utiliser les mêmes Redis instance en tant que maître. Ainsi, les données de connexion serait partagé entre tous les travailleurs.

Quelque chose comme ceci:

RedisInstance = new io.RedisStore;

L'on doit en quelque sorte de passer RedisInstance pour les travailleurs et de faire ce qui suit:

io.set('store', RedisInstance);

Inspiré par cette mise en œuvre l'aide de l'ancien, 3ème partie du cluster de module, j'ai le non-travail de mise en œuvre:

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  //Fork workers.
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  var sio = require('socket.io')
  , RedisStore = sio.RedisStore
  , io = sio.listen(8080, options);

  //Somehow pass this information to the workers
  io.set('store', new RedisStore);

} else {
  //Do the work here
  io.sockets.on('connection', function (socket) {
    socket.on('chat', function (data) {
      socket.broadcast.emit('chat', data);
    })
  });
}

Pensées? Je suis peut-être complètement dans le mauvais sens, n'importe qui peut pointer vers des idées?

Je me demande ce que l'approche que vous utilisez en fin de compte.

OriginalL'auteur David Chouinard | 2011-12-19