gpt4 book ai didi

node.js - 如何检测订阅者是否离开 Redis PUB/SUB channel ?

转载 作者:可可西里 更新时间:2023-11-01 11:14:56 26 4
gpt4 key购买 nike

我有多个应用实例正在运行。每个实例都有用户跨实例相互聊天。我需要显示用户是否离线。如果实例崩溃,那不会发生。当实例处于事件状态时,我可以通过该套接字的 websocket 获得连接丢失事件并通知其他实例。但如果应用程序实例崩溃,则不会发生这种情况。

最佳答案

您可以使用CLIENT LIST 来实现目标。此命令列出所有连接到 Redis 的客户端的信息。以下是 CLIENT LIST 显示的客户信息示例:

id=87 addr=127.0.0.1:63950 fd=10 name= age=3 idle=3 flags=P db=0 sub=3 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=subscribe
  1. 如果客户端崩溃或关闭连接,Redis 会将其从客户端列表中删除,并且您无法从CLIENT LIST 命令的结果中获取其addr
  2. 如果客户正在订阅/p订阅一个或多个 channel /模式,则客户信息的cmd字段将为订阅psubscribe , sub/psub 字段是它订阅的 channel /模式的数量。
  3. 如果客户端取消订阅/关闭所有 channel /模式,并且正在向 Redis 发送其他命令,则客户端信息的 cmd 字段将是它发送给 Redis 的最后一个命令,并且 sub/psub 字段将为 0。

为了找出哪个订阅者已经离开,您可以定期调用CLIENT LIST命令并检查每个连接的客户端的信息。

关于node.js - 如何检测订阅者是否离开 Redis PUB/SUB channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52921903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com