2016-06-23 16 views
5

'da MUC odasına katılırken hata Çok kullanıcılı bir sohbet oluşturmaya çalışıyorum. Odaya girerken hata alıyorum. kullanıcının katıldığı odanınXMPP (smack)

public void joinMultiUserChatRoom(String userName, String roomName) { 
     // Get the MultiUserChatManager 
     MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection); 

     // Create a MultiUserChat using an XMPPConnection for a room 
     MultiUserChat multiUserChat = manager.getMultiUserChat(roomName + "@conference.localhost"); 

     DiscussionHistory history = new DiscussionHistory(); 
     history.setMaxStanzas(-1); 
     try { 
      multiUserChat.join(userName, "", history, connection.getPacketReplyTimeout()); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

Alma Listesi: MUC odası katılmak için

public void createMultiUserChatRoom(String roomName, String nickName) { 

      // Get the MultiUserChatManager 
      MultiUserChatManager multiUserChatManager = MultiUserChatManager.getInstanceFor(connection); 

      // Get a MultiUserChat using MultiUserChatManager 
      MultiUserChat multiUserChat = multiUserChatManager.getMultiUserChat(roomName+"@conference.localhost"); 

      try { 
       multiUserChat.create(nickName); 
       Form form = multiUserChat.getConfigurationForm(); 
       Form submitForm = form.createAnswerForm(); 

       List<FormField> formFieldList = submitForm.getFields(); 
       for (FormField formField : formFieldList) { 
       if(!FormField.Type.hidden.equals(formField.getType()) && formField.getVariable() != null) { 
       submitForm.setDefaultAnswer(formField.getVariable()); 
       } 
       } 

      submitForm.setAnswer("muc#roomconfig_persistentroom", true); 
      submitForm.setAnswer("muc#roomconfig_publicroom", true); 

       multiUserChat.sendConfigurationForm(submitForm); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

Yöntemi: sohbet odası oluşturmak için Yöntem

public List<String> getJoinedGroupByUserName(String userName) { 
     // Get the MultiUserChatManager 
     MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection); 
     List<String> joinedRooms = null; 
     try { 
      // Get the rooms where [email protected] has joined 
      joinedRooms = manager.getJoinedRooms(userName+"@conference.localhost"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return joinedRooms; 
    } 

kullanıcı i bu olsun odama katılması iken message: "Bu oda, konfigürasyon onaylanana kadar girişten kilitlenir." Bir yapılandırmayı gönderdikten sonra (teyit) gerçekten müsait değil

cevap

2

Odası, yaratıcısı yani temelde

multiUserChat.sendConfigurationForm(submitForm); 

sonra katılmak zorunda yaratıcısı gerekir ayrıca

multiUserChat.join(username) 

(Gerekirse yoksa içeride kalın, bir bağlantıdan sonra bir muc.leave() gerçekleştirin)

+0

Oda oluştururken yapılandırmayı gönderiyorum. Odaya katılırken yeniden yapılandırma göndermem gerekiyor mu? Ve oda mevcut (veritabanı için odaya giriş var) – Jennifer

+0

Hayır, sadece zaman yaratın, ama "yarat", YALNIZCA CREATOR odasına katıldıktan sonra tamamlandı. Ancak, muhtemelen bir persitance oda için de yapılandırma yaratıcısı olarak göndermek zorundasınız (muC# roomconfig_roomowners -> Liste sahibi ) – MrPk

+0

Sohbet odasına üye olmaya çalışıyorum. Yani bunun için de oda arkadaşı eklemek zorundayım? Daha sonra oda üyelerini eklemeye ihtiyacım var, bu yüzden MUC odası oluştururken ekleyemiyorum – Jennifer

İlgili konular