通过redis准确跟踪#open套接字

时间:2014-08-11 09:48:19

标签: node.js redis socket.io

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

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

在socket连接上,我为用户增加一个redis键,在socket断开连接时,我减少了键。

但是,如果我手动或通过forever / supervisor重新启动套接字服务器,则不会调用减量计数器,为该用户的打开套接字连接提供的编号不正确。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

以下是答案:

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