2016-07-22 20 views
2

Nun, ich habe ein seltsames Problem. Ich bin in der Lage, muc zu erstellen, kann Benutzer einladen, kann aber nach einiger Zeit kann ich nicht der neu erstellten Gruppe beitreten. Dies geschieht nur für einige Benutzer, während andere Benutzer Gruppen erstellen/beitreten können. Ich schaffe MUC Gruppe:

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

      chatRoom.createOrJoin(chatGroup.title); 

User-Einladung ist wie folgt:

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); 

und das andere Ende Ich habe

@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); 

Der obige Code funktioniert gut, aber nach einiger Zeit Es beginnt unter dem folgenden Fehler:

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) 

Ich habe bei GroupChatInvitationListener.java:45 room.join Ich habe auch bemerkt diese XML in den empfangenen

<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> 

Es wieder zu arbeiten beginnen, wenn ich mod_muc Modul von Ejabberd Admin neu starten. Können Sie vorschlagen, was könnte das Problem sein?

+0

ich gleiches Problem konfrontiert bin. Konnten Sie das Problem herausfinden? –

Antwort

0

Nun, Problem war in MUC-Implementierung, wenn es keinen Benutzer online in der MUC gibt dann wird Server diese MUC ungültig machen. Selbst Besitzer werden nicht mehr in der Lage sein, der Gruppe beizutreten, wenn sie leer ist (keine Online-Mitglieder sind da).

Um dieses Problem zu lösen, haben wir MUC-SUB Implementierung, die als einen Charme verwenden, aber es ist noch experimentell ist, aber es funktioniert :)