Node.js 通过soket.io获取客户端后,如何从redis中删除数据?
现在,每当重新加载网页时,我都会将数据推送到channel redis,该数据会被放入stack redis,并在此处反复显示:Node.js 通过soket.io获取客户端后,如何从redis中删除数据?,node.js,redis,socket.io,node-redis,Node.js,Redis,Socket.io,Node Redis,现在,每当重新加载网页时,我都会将数据推送到channel redis,该数据会被放入stack redis,并在此处反复显示: $rediska->publish('real', 'PHP SENDING'); this is called every reload page redisClient.on('pmessage', function(pattern, channel, message) { console.log("Sending from Redis: "+ c
$rediska->publish('real', 'PHP SENDING'); this is called every reload page
redisClient.on('pmessage', function(pattern, channel, message) {
console.log("Sending from Redis: "+ channel); // here i get real, real, real, real
});
如何控制它?在不再发送此信息后,我必须检查客户端是否收到真实消息,如果用户单击“到”按钮,我必须从redis中删除数据。我认为您的问题位于以下代码之外:
redisClient.on('pmessage', function(pattern, channel, message) {
console.log("Sending from Redis: "+ channel); // here i get real, real, real, real
});
如果每次连接新用户(在服务器端)时调用此代码,则每次用户连接时它都会添加另一个侦听器。因此,如果重新加载页面3次,服务器端处理程序将绑定到pmessage
事件3次。这就是为什么你会得到这些输出
要验证这一点,请重新启动节点服务器,然后加载页面,您应该只看到一个“Sending from Redis:”,然后再次加载页面,您应该是2个新的控制台输出
如果是这种情况,只需将您的redisClient.on('pmessage')…
代码放在.on('connected'),…
处理程序之外,它就可以做到这一点
PS:如果这不能解决您的问题,您应该向我们发送更多代码(服务器端和客户端)