Node.js 使用相同的redis.createClient()实例进行发布和订阅
我正在使用redis在socket.io客户端之间发布和订阅消息,当客户端连接到服务器(Node.js 使用相同的redis.createClient()实例进行发布和订阅,node.js,redis,socket.io,Node.js,Redis,Socket.io,我正在使用redis在socket.io客户端之间发布和订阅消息,当客户端连接到服务器(io.sockets.on('connection',function(socket){…});)时,我正在使用redis.createClient()创建一个subscribe变量然后使用订阅功能将客户端订阅到频道 我的问题是,使用同一个subscribe变量执行发布操作是否正确?或者使用redis.createClient()创建另一个用于发布消息的实例很重要,因此我将有两个实例,一个用于发布,一个用于订
io.sockets.on('connection',function(socket){…});
)时,我正在使用redis.createClient()创建一个subscribe
变量
然后使用订阅功能将客户端订阅到频道
我的问题是,使用同一个subscribe变量执行发布操作是否正确?或者使用redis.createClient()
创建另一个用于发布消息的实例很重要,因此我将有两个实例,一个用于发布,一个用于订阅
感谢来自以下网站的:
一旦客户端进入订阅状态,它就不应该发出任何其他命令,除了其他SUBSCRIBE、PSUSCRIBE、UNSUBSCRIBE和PUNSCRIBE命令
因此,您需要两个客户端,一个用于订阅,另一个用于发布(可能还有其他命令)。通过subscribe变量,您是指redis.createClient()返回的对象吗?如果是,在文档中,
当客户端发出订阅或PSUBSCRIBE时,该连接将进入“发布/订阅”模式。此时,只有修改订阅集的命令才有效。
因此,是的,您不能发布到您首先订阅的客户端,这将发出一个错误:连接在发布/订阅模式下,只能使用发布/订阅命令。
错误
您确实需要为订阅创建一个客户端(可以动态修改),并创建一个要发布的客户端。当一个客户端的订阅是免费的时,您又恢复了正常状态。谢谢,您的意思是我可以使用同一个客户端订阅多个频道?我说得对吗;您将获得消息发布到的频道的名称,作为
消息
事件处理程序的第一个参数。以下是一些要点,可以帮助您: