使用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。
无论如何,希望这将有助于未来的其他人。