Skalowanie Socket.IO do wielu procesów Node.js przy użyciu klastra

Rozerwanie mi włosów tym ... Czy ktoś zdołał skalowaćSocket.IO do wielu procesów „roboczych” utworzonych przez Node.jsgrupa moduł?

Powiedzmy, że mam co następujecztery procesy robocze (pseudo):

// on the server
var express = require('express');
var server = express();
var socket = require('socket.io');
var io = socket.listen(server);

// socket.io
io.set('store', new socket.RedisStore);

// set-up connections...
io.sockets.on('connection', function(socket) {

  socket.on('join', function(rooms) {
    rooms.forEach(function(room) {
      socket.join(room);
    });
  });

  socket.on('leave', function(rooms) {
    rooms.forEach(function(room) {
      socket.leave(room);
    });
  });

});

// Emit a message every second
function send() {
  io.sockets.in('room').emit('data', 'howdy');
}

setInterval(send, 1000);

A w przeglądarce ...

// on the client
socket = io.connect();
socket.emit('join', ['room']);

socket.on('data', function(data){
  console.log(data);
});

Problem: Co sekundę odbieramcztery wiadomości z powodu czterech oddzielnych procesów roboczych wysyłających wiadomości.

Jak upewnić się, że wiadomość zostanie wysłana tylko raz?

questionAnswers(4)

yourAnswerToTheQuestion