我有一个套接字服务器,想知道某个特定用户是否有一个或多个连接的套接字。
在不同位置可以有多个套接字服务器用于负载平衡和扩展,因此客户端可以理论上具有多个套接字连接,每个套接字连接位于套接字服务器的不同位置/实例。
在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(
获取不准确数字的原因是因为我错误地取消了相关频道的订阅。以上编辑似乎有效。
答案 0 :(得分:0)
以下是答案:
client.publish("somechannel", "some message", function(err, val){
console.log("here with val: " + val);
});