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
Это поможет вам решить проблему и ее очень легко реализовать.