0

我们正在使用 IOS XMPP 框架和 Android Smack 库在我们的移动应用程序中连接我们的 ejabberd 服务器。他们俩都有类似的问题。

当我们以管理员身份创建房间时,我们通过发送 ejabberd 将用户添加到成员列表

<item affiliation='member' jid='xxx@yyy.com'>

然后用户可以毫无问题地向组发送和接收消息。如果用户从设备中删除应用程序并重新安装它,我们将使用 muc 发现协议来发现他/她在卸载应用程序之前加入了哪些房间

但是此时有一个问题,如果用户在组的所有参与者都脱机时使用 muc 发现。服务器不会将有关该组的 muc 发现结果返回给用户,因为他/她是该组的参与者。

当我检查管理控制台时,这些组似乎有 0 个参与者(因为所有参与者都离线,但他们在成员列表中)。而且我认为 muc discovery 只返回参与者超过 0 的组

有谁知道为什么会发生这种情况,我该如何找到解决方案?@badlop

我们正在使用 ejabberd 16.09

4

1 回答 1

0

Muc 说如果用户下线,那么他应该离开他的所有组,这就是为什么当用户下线时你没有获得组参与者。见这里 http://xmpp.org/extensions/xep-0045.html

而不是使用 muc 使用 muc-light https://xmpp.org/extensions/inbox/muc-light.html

它将帮助您解决问题并且非常容易实施。

于 2016-12-29T17:06:14.333 回答