Ejabberd 16.09 Muc Discovery

Мы используем IOS XMPP Framework и Android Smack Library для подключения нашего сервера ejabberd в нашем мобильном приложении. У них обоих есть похожая проблема.

Когда мы создаем комнату как администратор, мы добавляем пользователей в список участников, отправляя ejabberd

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

Затем пользователи могут отправлять и получать сообщения в группе без каких-либо проблем. И если пользователь удаляет приложение с устройства и переустанавливает его, мы используем протокол обнаружения muc, чтобы определить, к каким комнатам он присоединился, прежде чем удалить приложение.

Однако на этом этапе возникает проблема, если пользователь использует обнаружение muc, когда все участники группы перешли в автономный режим. Сервер не возвращает результат обнаружения muc об этой группе пользователю, так как он является ее участником.

И когда я проверяю консоль администратора, кажется, что в этих группах 0 участников (потому что все участники не в сети, но они есть в списке участников). И я думаю, что MUC Discovery возвращает только группы, которые имеют более 0 участников

Кто-нибудь знает, почему это происходит и как я могу найти решение для этого? @badlop

Мы используем ejabberd 16.09

1 ответ

Muc говорит, что если пользователь выходит из сети, он должен покинуть всю свою группу, поэтому вы не получаете участника группы, когда пользователи уходят в автономный режим. Смотрите здесь http://xmpp.org/extensions/xep-0045.html

Вместо использования muc используйте muc-light https://xmpp.org/extensions/inbox/muc-light.html

Это поможет вам решить проблему и ее очень легко реализовать.

Другие вопросы по тегам