【发布时间】:2013-05-07 13:11:24
【问题描述】:
在向他们发送消息之前知道给定联系人是否在线的正确 xmpp4r 方法是什么?
您可以发布示例 xmpp4r 代码吗?
这是我的用例:
如果在线联系,发送:普通消息
其他,电子邮件联系
以下是我的工作代码:
发送各种类型的消息
获取名册/联系人列表
注册回调以检测存在的变化
但是,我找不到可以直接处理这样的工作流程的地方:
遍历您名册中的每个 JID
如果 jid.is_online? == true,发送即时消息
否则,发送电子邮件
我读到您应该向 JID 发送类型为 :headline 的消息,如果失败,您就知道该用户处于离线状态。在我的测试中,如果用户在线,他们将收到标题类型的消息。这是次优的,因为用户应该只接收要阅读的消息,而不是确定在线状态的噪音。
我了解到,在登录时,您的所有联系人都会向您回复在线状态,并且该状态是他们在线的唯一指示 - 假设您没有断开连接或在线状态更改”还没收到。因此,您应该注册一个在线回叫,记录回拨您的初始用户,然后根据您正在运行的名册在线回叫从列表中添加或删除。
如果这真的是这样做的方法:
我能否获取一些示例代码,说明如何在通过 xmpp4r 登录时收集所有“我在这里”存在确认?
为什么,哦,为什么,xmpp 是这样设计的,为什么这比提供“is_online_and_available”方法更好?
【问题讨论】: