现在我每次都将数据推送到频道redis,当重新加载网页时,这些数据被叠加到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删除数据。
答案 0 :(得分:0)
我认为您的问题位于以下代码之外:
redisClient.on('pmessage', function(pattern, channel, message) {
console.log("Sending from Redis: "+ channel); // here i get real, real, real, real
});
如果每次连接新用户时(在服务器端)都会调用此代码,则每次用户连接时都会添加另一个侦听器。因此,如果您重新加载页面3次,则服务器端处理程序将绑定3次pmessage
事件。这就是你获得所有这些产出的原因。
要验证这一点,重新启动节点服务器,然后加载页面,你应该只看到一个“从Redis发送:”,然后再次重新加载页面,你应该是2个新的控制台输出。
如果是这种情况,只需将redisClient.on('pmessage'...
代码放在.on('connected', ...
处理程序之外,就可以了。
PS:如果这不能解决您的问题,您应该向我们发送更多代码(包括服务器端和客户端)