Redis, Node.js e Socket.io: autenticação entre servidores e entendimento do node.js

Eu tenho um aplicativo de página única em execução no Rails e no Backbone.js. Estou usando o Node.js através do Redis para enviar e sincronizar dados com os clientes. Estou tentando entender, proteger e otimizar as comunicações de soquetes.

Ao escrever com console.log, vejo algumas linhas de log (console.log('Redis connection on ..')) estão ficando duplicados (veja abaixo).

Alguém pode me explicar o porquê? Existe algum comportamento específico do Node.js. que não estou entendendo, através da minha implementação de código?

Aqui está o meu código Node.js:

var io = require('socket.io').listen(3003);
var redis = require('redis');
var cookie = require("cookie");
var redis_subs = redis.createClient(6379, "localhost");
var redis_auth = redis.createClient(6379, "localhost");
var authenticated = false;

var authentication_status = function (status) {
  if (status === true) {
    console.log('Authentication status is true.');
  }
  else {
    console.log('Authentication status is false.');
  }
  authenticated = status;
};

redis_subs.subscribe('application_channel');

io.configure(function () {
  io.set('authorization', function (data, callback) {
    console.log('Cross authentication...');
    if (data.headers.cookie) {
      data.cookie = cookie.parse(data.headers.cookie);
      data.sessionID = data.cookie['_validation_token_key'];
      redis_auth.hget(["sessionStore", data.sessionID], function (err, session) {
        if (err || !session) {
          console.log('Socket.io authorization say false');
          return callback(authentication_status(false), false);
        }
        else {
          data.session = JSON.parse(session);
          console.log('Socket.io authorization say true');
          return callback(authentication_status(true), true);
        }
      });
    }
    else {
      console.log('Socket.io authorization say false');
      return callback(authentication_status(false), false);
    }
  });
});

io.on('connection', function(socket){
    if (socket.handshake.session) {
      var user_socket_channel = socket.handshake.session['user_socket_channel']
      redis_subs.on('message', function(redis_channel, rawdata) {
        console.log('Redis connection on '+redis_channel);
        console.log('Handshaked Session, authenticated user. All channels allowed.');
        var data = JSON.parse(rawdata);
        if (data.channel) { var socket_channel = data.channel; }
        else { var socket_channel = user_socket_channel; }
        var rails_data = data.data;
        console.log('Socket.io emiting on ['+socket_channel+']')
        socket.emit(socket_channel, rails_data);
      });
    }
    else {
      redis_subs.on('message', function(redis_channel, rawdata) {
        console.log('Redis connection on '+redis_channel);
        console.log('No handshaked Session, unauthenticated user. Public channels allowed.');
        var data = JSON.parse(rawdata);
        var rails_data = data.data;
        console.log('Socket.io emiting on [public]')
        socket.emit('public', rails_data);
      });
    }
});

Aqui está a maneira como estou testando e o caso de uso específico em que o log está ficando duplicado:

Carregando a página enquanto estiver conectado, com o navegador da web1 (por exemplo: Firefox); resultado:

   info  - socket.io started
Cross authentication...
Socket.io authorization say true
Authentication status is true.
   debug - authorized
   info  - handshake authorized bJxm_IcWl2mKZT4Ed-kV
   debug - setting request GET /socket.io/1/websocket/bJxm_IcWl2mKZT4Ed-kV
   debug - set heartbeat interval for client bJxm_IcWl2mKZT4Ed-kV
   debug - client authorized for 
   debug - websocket writing 1::

Carregando a mesma página sendo desconectada com o browser2 (por exemplo: Chrome)

Cross authentication...
Socket.io authorization say false
Authentication status is false.
   debug - authorized
   info  - handshake unauthorized

Enviando alguns dados através da página / navegador1 (Firefox) -> Rails -> Redis, saída:

Redis connection on application_channel
Handshaked Session, authenticated user. All channels allowed.
Socket.io emiting on [hLTYXuvP+13aQlIT9CZiYc1i9eg=]
   debug - websocket writing 5:::{"name":"hLTYXuvP+13aQlIT9CZiYc1i9eg=","args":[null]}

Recarregando a página no navegador2 (Chrome, desconectado), saída ainda

Cross authentication...
Socket.io authorization say false
Authentication status is false.
   debug - authorized
   info  - handshake unauthorized

Recarregando a página no browser1 / Firefox e enviando mais dados ao Redis através da página e do Rails, produzimos:

Redis connection on application_channel
Handshaked Session, authenticated user. All channels allowed.
Socket.io emiting on [hLTYXuvP+13aQlIT9CZiYc1i9eg=]
Redis connection on application_channel
Handshaked Session, authenticated user. All channels allowed.
Socket.io emiting on [hLTYXuvP+13aQlIT9CZiYc1i9eg=]
   debug - websocket writing 5:::{"name":"hLTYXuvP+13aQlIT9CZiYc1i9eg=","args":[null]}

Como você pode ver, o evento foi duplicado e o ouvinte do Redis agora captura duas conexões; Sempre que recarregar a página1 / Firefox, ele será duplicado mais uma vez (3,4,5 ...).

Eu não entendo esse comportamento. o que estou perdendo? A propósito, como você pode ver, eu realmente não entendo nem o objetivo do Socket.ioconfigure, set authorization ecallback, retornando verdadeiro ou falso, pois o Node está alcançandoio.on('connection') e Redis ouvintes de qualquer maneira.

questionAnswers(1)

yourAnswerToTheQuestion