【问题标题】:Keep accurate track of #open sockets via redis通过 redis 准确跟踪#open 套接字
【发布时间】:2014-08-11 09:48:18
【问题描述】:

我有一个套接字服务器,想知道特定用户是否有一个或多个连接的套接字。

出于负载平衡和扩展目的,可以在不同位置有多个套接字服务器,因此理论上客户端可以有多个套接字连接,每个连接位于套接字服务器的不同位置/实例。

在套接字连接时,我为用户增加一个 redis 密钥,在套接字断开连接时,我减少密钥。

但是,如果我手动或通过永久/主管重新启动套接字服务器,则不会调用递减计数器,从而为该用户提供不正确的打开套接字连接数。

我的问题是,可以使用当前的方法进行一些调整以将准确的数字存储在 redis 中,还是我应该考虑使用另一种方法?

编辑:在每个套接字连接上,我使用 redis 客户端订阅特定频道。这个可以用吗?

编辑:我可以从client.publish 回调中获取返回值,以查看有多少订阅者收到了消息:

    client.publish("somechannel", "some message", function(err, val){
            console.log("here with val: " + val);
    });

但这个值似乎并不总是准确的。

编辑:我从client.publish( 获得不准确数字的原因是我错误地取消了相关频道的订阅。上面的编辑似乎有效。

【问题讨论】:

    标签: node.js redis socket.io


    【解决方案1】:

    答案如下:

    client.publish("somechannel", "some message", function(err, val){
            console.log("here with val: " + val);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      • 2021-08-08
      • 2011-04-27
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      相关资源
      最近更新 更多