Jabber bot - 如何获得状态更新?

时间:2012-02-22 18:16:49

标签: python linux xmpp openfire

我正在使用以下代码连接到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)

这很好用,管理员用户获得状态更新,在联系人中“测试”用户显示为在线状态。如果我在这个脚本上按ctrl + c(当它在最后睡觉时)会出现问题,所以它终止了。问题是管理员用户没有从该脚本获得状态更新。

我还应该提到admin用户自动接受订阅请求。

我的问题是:管理员用户如何检测到测试用户是否脱机。并且更改上面的脚本不是一个选项,因为任何人都可以写这个并在我的xmpp服务器上构建一个程序。

欢迎管理员未收到状态更新或如何检测用户“测试”下线的任何想法。

由于

1 个答案:

答案 0 :(得分:1)

检测到端点在没有特定状态更新的情况下脱机通常由服务器处理,例如。检测到端点正在通信的套接字已经关闭。

如果您只能控制客户端代码,则可以偶尔从管理客户端向其所有订阅的端点发送presence probes