繁体   English   中英

在socket.io中使用redis - 如何为每个客户端更新?

[英]Using redis with socket.io - how to update for each client?

我正在使用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);
    });
});

我是否需要在io.sockets.on为每个客户端创建一个单独的Redis实例 - 如果是这样,这会扩展吗?

或者,我做错了什么?

得到它了! 我当时很蠢。

我在socket.on('disconnect'...)中调用client.quit() - 这显然完全删除了Redis客户端。 DUH。

无论如何,希望这对未来的其他人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM