我使用以下代码连接到xmpp服务器(python+xmppy):

  c = xmpp.Client("localhost", debug=[])
  c.connect(("127.0.0.1", 5222))
  c.auth("test","test")
  c.sendInitPresence()
  c.send(xmpp.Presence(to="admin@localhost", typ='subscribe'))
  time.sleep(1000)

这很好,管理员用户get的状态更新和联系人中的“测试”用户显示为在线。如果我在这个脚本上按ctrl+c键(当它在最后休眠时),就会出现问题,所以它被终止。问题是管理员用户无法从该脚本获取状态更新。
我还应该提到,管理员用户自动接受订阅请求。
我的问题是:管理员用户如何检测到测试用户脱机。更改上面的脚本不是一个选项,因为任何人都可以编写这个脚本并在我的xmpp服务器上设置一个程序。
我们欢迎您提供任何有关管理员为何不接收状态更新或如何检测用户“测试”脱机的信息。
谢谢

最佳答案

如果检测到某个端点在没有特定状态更新的情况下脱机,通常由服务器处理,例如,检测到该端点正在通信的套接字已关闭。
如果您只能控制客户机代码,则可以从管理客户机偶尔向其所有订阅的端点发送presence probes

08-03 18:53