一次获取多个 JID XMPP

Posted

技术标签:

【中文标题】一次获取多个 JID XMPP【英文标题】:Get Presence of Multiple JIDs at once XMPP 【发布时间】:2011-03-16 01:59:16 【问题描述】:

我正在开发一个 XMPP 应用程序,并将执行一个全局共享名册,这样我就不必执行出席信息订阅请求。我还需要获得一定范围的 JabberID,而不是整个全球名册。我们不想做单个定向出席信息节,因为这将需要每个页面加载多达 15 个出席信息调用。 XMPP 中是否有一种方法可以让我一次获得多个但特定的 JID?

类似:

<presence from="user1@domain.tld,user2@domain.tld,user3@domain.tld" to="user4@domain.tld" />

提前致谢!

【问题讨论】:

希望有这样的东西,但不幸的是我不认为 XMPP 将允许你以直接的方式做到这一点。您将不得不继续破解推送存在节的服务器端实现,以使其按需要工作。您的案例与facebook主页非常相似,我可以随意保持刷新并期望facebook聊天显示我的列表中的在线好友。 Facebook 是否会在每次刷新时更新我好友的可用性状态??,确实不是。您可能希望在相同的线路上进行投资以实现可扩展的实施。 【参考方案1】:

您可以创建一个 pubsub 节点,其中每个项目都与用户有关。 id 是用户的裸 JID,内容可以是一个数据表,说明他们是否在线。

bot 或 xmpp 模块侦听存在消息,然后适当地更新 pubsub 节点。

然后,客户端可以使用他们喜欢的任何方法查询 pubsub 节点:subscribe 并获取实时更新,或者查询并使用 requests

【讨论】:

以上是关于一次获取多个 JID XMPP的主要内容,如果未能解决你的问题,请参考以下文章

xmpp如何获取当前连接jid名称

如何使用 XMPP ios8 获取最后一个对话用户?

XMPP XEP-0313 Smack Android 获取所有名册成员的最新消息

SleekXMPP:将出席 ['muc']['jid'] 获取到每条消息的消息处理程序

如何使用 xmpp jidstr iOS sdk 获取资源

检查在xmpp服务器中注册的jid(jabber id) - iOS xmpp框架