0

iOS XMPP フレームワークと Android Smack ライブラリを使用して、モバイル アプリケーションで ejabberd サーバーに接続しています。どちらも同様の問題を抱えています。

管理者としてルームを作成すると、ejabberd を送信してメンバー リストにユーザーを追加します。

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

その後、ユーザーは問題なくグループにメッセージを送受信できます。また、ユーザーがデバイスからアプリを削除して再インストールした場合、muc 検出プロトコルを使用して、アプリをアンインストールする前に参加していたルームを検出します。

ただし、この時点で、グループのすべての参加者がオフラインになったときにユーザーが muc ディスカバリーを使用すると問題があります。ユーザーはそのグループの参加者であるため、サーバーはそのグループに関する多くの発見結果をユーザーに返しません。

そして、管理コンソールを確認すると、これらのグループには参加者が 0 人いるようです (すべての参加者はオフラインですが、メンバーリストにあるため)。そして、多くの発見は、参加者が0人を超えるグループのみを返すと思います

なぜそれが起こるのか、どうすれば解決策を見つけることができるのか誰にもわかりませんか? @バドロップ

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 に答える