【问题标题】:How delete data from redis after getting client via soket.io?通过soket.io获取客户端后如何从redis中删除数据?
【发布时间】:2013-11-25 18:30:39
【问题描述】:

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

【问题讨论】:

    标签: node.js redis socket.io node-redis


    【解决方案1】:

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

    redisClient.on('pmessage', function(pattern, channel, message) {
     console.log("Sending from Redis: "+ channel); // here i get real, real, real, real
    });
    

    如果您在每次连接新用户时调用此代码(在服务器端),它将在每次用户连接时添加另一个侦听器。因此,如果您重新加载页面 3 次,您的服务器端处理程序将绑定 3 次到 pmessage 事件。这就是您获得所有这些输出的原因。

    为了验证这一点,重启节点服务器,然后加载页面,你应该只看到一个“Sending from Redis:”,然后再次重新加载页面,你应该是 2 个新的控制台输出。

    如果是这种情况,只需将您的 redisClient.on('pmessage'... 代码放在 .on('connected', ... 处理程序之外,它就可以解决问题。

    PS:如果这不能解决您的问题,您应该向我们发送更多代码(在服务器端和客户端)

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 1970-01-01
      • 2021-10-01
      • 2018-05-31
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      相关资源
      最近更新 更多