繁体   English   中英

确定XMPP用户是否在线

[英]Determine if an XMPP user is online or not

我正在使用xmpppy库来编写可以与用户聊天的XMPP客户端。 它有自己的XMPP用户帐户,需要知道给定用户是否在线。 但是,如何执行此操作的文档有点稀疏。 你会推荐什么?

到目前为止,我看到的唯一解决方案是在XMPP服务器启动之前启动一个守护程序并监视发出的所有在线消息 - 如果用户发送了“我在线”,则称该用户在线-type消息但不是相应的“我正在注销”消息。 但是,作为XMPP的新手,我认为会有更好的方法来做到这一点。

简单的方法是支持“订阅”状态消息 - 这允许另一个用户通过“订阅”尝试检查您当前是否存在(如果他们还不知道)。 查看这个有用的入门指南 ,以及更多重要细节的标准 (特别是如果需要,保护您的隐私来自您不知道的用户的订阅请求)。

基本上有三种方法可以连接到XMPP服务器:作为客户端(您已经完成),作为组件,以及作为另一个服务器。 服务器到服务器类型(s2s)只是一个联合连接,非常类似于邮件服务器如何相互交换电子邮件。

亚历克斯描述了客户如何跟踪存在。 XMPP要求我批准您可以接收我的状态信息,反之亦然。 对于您的机器人,这意味着您可以跟踪最终用户接受您的状态请求所需的在线用户。 这也意味着您可以响应用户的状态请求,并随时了解您的机器人是否已启动。

最后一种方法是作为可信组件,只有在运行服务器时才有效。 即如果你试图在jabber.org服务器上这样做,你运气不好,因为你没有运行该服务器。 upsdie是你可以访问XMPP服务器的内部,比如拉动每个在线人员的列表。 缺点是您的组件/机器人实现对于每个服务器实现都会有所不同。

您可能希望看到问题“Jabber bot - 如何获得联系人的可用性?” 如果我理解你的问题,我认为这与它有关。

当然,正如Alex指出的那样,无论如何你需要订阅用户的存在 - 但你似乎已经理解了这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM