一尘不染

使用nodejs和redis发布订阅(node_redis)

redis

我正在尝试使用nodejs和node_redis构建一个通用的发布/订阅服务器,该服务器接收带有通道名称的浏览器的请求,并以该通道也已发布的任何数据作为响应。为此,我使用了来自浏览器的长轮询请求,并通过在通道上收到消息时发送响应来处理这些请求。

对于每个新请求,都会创建一个对象来订阅该频道(如果且仅当该频道不存在时)。

clients = {};

//when request comes in,
clients[channel] = redis.createClient();
clients[channel].subscribe(channel);

这是处理订阅渠道的最佳方法,还是还有其他更直观的方法?


阅读 745

收藏
2020-06-20

共1个答案

一尘不染

对我来说,这似乎是一个非常合理的解决方案。您对此不满意吗?

请记住,每个Redis连接上可以有多个订阅。这可能最终会使您的逻辑复杂化,这与您要的相反。但是,这可能是必要的。每个Redis连接都相对便宜,但确实需要一个文件描述符和一些内存。

2020-06-20