Android Ejabberd XmpeException$XmperRorException:XmperRor:服务不可用-取消,加入MUC

Android Ejabberd XmpeException$XmperRorException:XmperRor:服务不可用-取消,加入MUC,android,xmpp,ejabberd,smack,Android,Xmpp,Ejabberd,Smack,嗯,我面临一个奇怪的问题。我能够创建muc,能够邀请用户,能够加入,但一段时间后我无法加入新创建的组。 这种情况只发生在某些用户身上,而其他用户可以创建/加入组。 我正在创建MUC group作为: MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(getConnection()); MultiUserChat chatRoom = manager.getMultiUserChat(gro

嗯,我面临一个奇怪的问题。我能够创建muc,能够邀请用户,能够加入,但一段时间后我无法加入新创建的组。 这种情况只发生在某些用户身上,而其他用户可以创建/加入组。 我正在创建MUC group作为:

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='c09b59da-1d5b-4783-9346-93c23edc0660@conference.MyHOST/A J 33' to='31bc27e9-c650-4870-aaab-ca7285848954@MyHOST/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>

如果我从Ejabberd Admin重新启动mod_muc模块,它将再次开始工作。
您能提出可能的问题吗?

嗯,问题是在MUC实现中,如果MUC中没有在线用户,那么服务器将使该MUC无效。即使是所有者也无法再次加入该组,如果该组为空(没有在线加入者)


为了解决这个问题,我们必须使用具有魅力的实现,尽管它目前是实验性的,但它是有效的:)

我也面临同样的问题。你能解决这个问题吗?