XMPP名册存在

Posted

技术标签:

【中文标题】XMPP名册存在【英文标题】:XMPP Roster presence 【发布时间】:2012-11-30 14:21:28 【问题描述】:

我的名册机制有问题,我正在使用 JSJaC javascript 库。

我的情况:

用户 A 有一个简单的名册,其中包含另一个订阅“both”的用户 B。用户 B 的配置相同。

当用户 A 登录到 openfire 时,我调用我的“getRoster()”函数返回用户的朋友列表(在我的例子中,只有用户 B),但是我如何检查用户 B 当前是否可用聊天?

我看到有一些存在机制,但我不明白如何使用这些。

对不起,我的英语很差。谢谢。

【问题讨论】:

【参考方案1】:

当您将自己的状态发送到服务器时,服务器开始将您订阅的联系人的所有状态发送给您。默认情况下,您必须将所有联系人视为离线。

我对 JSJaC 不熟悉,但可能有一个回调,存在的地方。

【讨论】:

【参考方案2】:

您应该注册一个presence 处理程序。假设您有 roster 作为用户数据数组,您可以这样做:

xmpp.registerHandler 'presence', (response) ->
  user = _.find @roster, jid: (response.getFrom().split '/').shift()
  if user
    if response.getType() is 'unavailable'
      user.online = no
    else
      user.online = yes

【讨论】:

以上是关于XMPP名册存在的主要内容,如果未能解决你的问题,请参考以下文章

XMPP 获取所有名册的存在和状态消息

XMPP - 名册订阅说明

动态 XMPP 名册?

如何使用 simple-xmpp/node-xmpp 获得 Jabber 用户的名册?

xmpp 框架 - 检测更改的花名册列表

XMPP 多人游戏功能 - 设计问题