gpt4 book ai didi

javascript - 将 redis 与 socket.io 一起使用 - 如何为每个客户端更新?

转载 作者:IT王子 更新时间:2023-10-29 06:09:19 25 4
gpt4 key购买 nike

我将 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 客户端。呸。

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

关于javascript - 将 redis 与 socket.io 一起使用 - 如何为每个客户端更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7985102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com