我正在使用xmpppy
库来编写可与用户聊天的XMPP客户端。它有自己的XMPP用户帐户,需要知道给定用户是否在线。但是,如何执行此操作的文档有点稀疏。你会推荐什么?
到目前为止,我看到的唯一解决方案是在XMPP服务器启动之前启动一个守护程序并监控发出的所有在线消息 - 如果用户发送了“我”,则说该用户在线在线“-type消息,但没有相应的”我正在注销“消息。但是,作为XMPP的新手,我认为有更好的方法可以做到这一点。
答案 0 :(得分:2)
简单的方法是支持“订阅”状态消息 - 这可以让另一个用户通过“订阅”尝试检查您当前是否存在(如果他们还不知道)。检查this useful guide以开始使用,并the standard查看更多重要的详细信息(特别是如果需要,保护您的隐私来自您不知道的用户的订阅请求)。
答案 1 :(得分:1)
基本上有三种方法可以连接到XMPP服务器:作为客户端(您已经完成),作为组件,以及作为另一个服务器。服务器到服务器类型(s2s)只是一个联合连接,非常类似于邮件服务器如何相互交换电子邮件。
亚历克斯描述了客户如何跟踪存在。 XMPP要求我批准您可以接收我的状态信息,反之亦然。对于您的机器人,这意味着您可以跟踪最终用户接受您的状态请求所需的在线用户。这也意味着您可以响应用户的状态请求,并随时了解您的机器人是否已启动。
最后一种方法是作为可信组件,只有在运行服务器时才有效。即如果你试图在jabber.org服务器上执行此操作,那么你运气不好,因为你没有运行该服务器。 upsdie是你可以访问XMPP服务器的内部,比如拉动每个在线人员的列表。缺点是每个服务器实现的组件/机器人实现都会有所不同。
答案 2 :(得分:0)
您可能希望看到问题"Jabber bot - how to get the availability of contacts?"。如果我理解你的问题,我认为这与它有关。
当然,正如Alex指出的那样,无论如何你需要订阅用户的存在 - 但你似乎已经理解了这一点。