2016-07-22 7 views
2

Ну, я столкнулся с странной проблемой. Я могу создать muc, способный приглашать пользователей, способных присоединиться, но через некоторое время я не могу присоединиться к вновь созданной группе. Это происходит только для некоторых пользователей, в то время как другие пользователи могут создавать/вступать в группы. Я создаю группу MUC как:

MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(getConnection()); 
      MultiUserChat chatRoom = manager.getMultiUserChat(groupName+ "@conference." + Constants.XMPP_SERVICE); 

      chatRoom.createOrJoin(chatGroup.title); 

Приглашение пользователя выглядит следующим образом:

MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(getConnection()); 
         MultiUserChat chatRoom = manager.getMultiUserChat(groupName+ "@conference." + Constants.XMPP_SERVICE); 
chatRoom.changeNickname(FirstName); 
           chatRoom.invite(invite.UserId + "@" + Constants.XMPP_SERVICE, groupInfo); 

И другой конец у меня есть

@Override 
    public void invitationReceived(XMPPConnection conn, final MultiUserChat room, String inviter, final String reason, String password, final Message message) { 
     Log.d("XMPPInvitation", ""); 
     try { 
      room.join(FirstName); 

Приведенный выше код работает нормально, но через какое-то время он начинает давать ниже ошибки:

org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: service-unavailable - cancel 
at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:232) 
at org.jivesoftware.smackx.muc.MultiUserChat.enter(MultiUserChat.java:311) 
at org.jivesoftware.smackx.muc.MultiUserChat.join(MultiUserChat.java:495) 
at org.jivesoftware.smackx.muc.MultiUserChat.join(MultiUserChat.java:430) 
at com.app.xmpp.GroupChatInvitationListener.invitationReceived(GroupChatInvitationListener.java:45) 

Я room.join на GroupChatInvitationListener.java:45 Я также заметил это получил XML

<presence from='[email protected]/A J 33' to='[email protected]/A J 33' type='error' xml:lang='en' id='WC0zt-374'><x xmlns='http://jabber.org/protocol/muc'/><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.igniterealtime.org/projects/smack' ver='os2Kusj3WEOivn5n4iFr/ZEO8ls='/><error code='503' type='cancel'><service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></presence> 

Он снова начать работать, если перезапустить mod_muc модуль из Ejabberd Admin. Можете ли вы предложить, что может быть проблемой?

+0

я столкнулся такая же проблема. Вы смогли разобраться в проблеме? –

ответ

0

Ну, проблема была в реализации MUC, если в MUC нет пользователя в сети, тогда сервер сделает недействительным этот MUC. Даже владелец также не сможет снова присоединиться к группе, если он станет пустым (нет онлайн-участников).

Чтобы решить эту проблему, мы должны использовать MUC-SUB реализацию, которая работает как шарм, однако это экспериментальное настоящее время, но это работает :)

 Смежные вопросы

  • Нет связанных вопросов^_^