使用redis和socket.io – 如何更新每个客户端?

我使用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内部创build一个单独的Redis实例 – 如果是这样,是否会扩展?

否则,我做错了什么?

得到它了! 我当时很蠢

我在socket.on('disconnect'...) client.quit()里面调用了client.quit() ,这显然是删除了Redis客户端。 DUH。

无论如何,希望这将有助于未来的其他人。