0

现在我每次都将数据推送到通道 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 中删除数据。

4

1 回答 1

0

我认为您的问题位于以下代码之外:

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:如果这不能解决您的问题,您应该向我们发送更多代码(在服务器端和客户端)

于 2013-11-26T13:18:27.103 回答