Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 通过soket.io获取客户端后,如何从redis中删除数据?_Node.js_Redis_Socket.io_Node Redis - Fatal编程技术网

Node.js 通过soket.io获取客户端后,如何从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

现在,每当重新加载网页时,我都会将数据推送到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: "+ 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:如果这不能解决您的问题,您应该向我们发送更多代码(服务器端和客户端)