Использование redis с socket.io - как обновить для каждого клиента? - PullRequest
1 голос
/ 02 ноября 2011

Я использую socket.io и Redis вместе с node.js - код приведен ниже.

Я определенно глуп, но не могу понять, почему событие Redis срабатывает только с первымПользователь, который подключается.

Я снова вижу консольное сообщение NEW CONNECTION для каждого пользователя, открывающего страницу, но я вижу только консольное сообщение REDIS с первым пользователем.

io = io.listen(app);
client.flushall();
io.sockets.on('connection', function (socket) {

    // Update Redis with information about this connection. 
    console.log('*************** NEW CONNECTION');
    client.multi()
       .hmset("user:" + user_id, "nickname", nick)
       .sadd("chatroom:" + room_id, user_id)
       .exec();

    // Check that the Redis record was set. 
    client.smembers("chatroom:" + room_id, function (err, data) {
          if (err) { console.log(err); return; }
          console.log('REDIS CALL FOR chatroom:' + room_id, data);
    });
});

Нужно ли мнесоздать отдельный экземпляр Redis внутри io.sockets.on для каждого клиента - и если да, будет ли это масштабироваться?

Или иначе, что я делаю не так?

1 Ответ

4 голосов
/ 02 ноября 2011

Понял!Я был глуп.

Я звонил client.quit() внутри socket.on('disconnect'...) - что, очевидно, полностью удаляло клиента Redis.Дух.

Надеюсь, это поможет кому-то еще в будущем, в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...