gpt4 book ai didi

database - Redis - 发布/订阅内部

转载 作者:可可西里 更新时间:2023-11-01 11:44:53 25 4
gpt4 key购买 nike

我编写了一个小型 Socket.IO 服务器,它工作正常,我可以连接到它,我可以发送/接收消息,所以一切正常。此处仅提供代码的相关部分:

var RedisStore = require('socket.io/lib/stores/redis');
const pub = redis.createClient('127.0.0.1', 6379);
const sub = redis.createClient('127.0.0.1', 6379);
const store = redis.createClient('127.0.0.1', 6379);

io.configure(function() {
io.set('store', new RedisStore({
redisPub : pub,
redisSub : sub,
redisClient : store
}));
});

io.sockets.on('connection', function(socket) {
socket.on('message', function(msg) {
pub.publish("lobby", msg);
});


/*
* Subscribe to the lobby and receive messages.
*/
var sub = redis.createClient('127.0.0.1', 6379);
sub.subscribe("lobby");
sub.on('message', function(channel, msg) {
socket.send(msg);
});
});

在这里,我对某些客户端订阅不同房间的问题很感兴趣,这就是为什么我还在每个套接字连接中使用 sub Redis 变量的原因:因为每个客户端都可以订阅不同的房间并且可以从那里接收消息。我不完全确定上面的代码是否正确,所以除了在 Socket.IO 连接中定义子 Redis 连接之外,如果我需要做任何其他事情,请告诉我:这也意味着为每个连接生成一个新的 Redis 连接客户端连接从已订阅的房间提供他的消息?我想这是一个很大的开销,所以我想尽可能地解决它?

谢谢

最佳答案

node.js 和 redis 都非常擅长处理大量连接(几千个没问题),所以你做的很好。

作为旁注,如果您确实打算支持数千个连接,则需要考虑提高文件描述符限制。

关于database - Redis - 发布/订阅内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14246308/

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