Ich versuche, einen Multi-User-Chat zu erstellen. Ich bekomme Fehler, wenn ich mich dem Raum anschließe. Verfahren zum Erstellen von Chat-Raum:Fehler beim Verbinden von MUC-Raum in XMPP (smack)
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();
}
}
Methode für MUC Zimmer Beitritt:
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();
}
}
Erste Liste der verbundenen Zimmer von Benutzer:
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;
}
Während Benutzer registrieren um den Raum ich das bekommen Nachricht: "Dieser Raum ist vom Eingang bis zur Bestätigung der Konfiguration gesperrt."
Ich habe Konfiguration senden, während ich Raum erschaffe. Muss ich die Konfiguration erneut senden, während ich dem Raum beitrete? Und Zimmer existiert (es gibt Eintrag für Zimmer in der Datenbank) – Jennifer
Nein, nur auf die Zeit zu erstellen, aber "create" ist abgeschlossen, NUR nachdem der CREATOR dem Raum beigetreten ist. Wahrscheinlich müssen Sie aber auch einen Konfigurations-Ersteller als Besitzer senden (muC# roomconfig_roomowners -> List der Eigentümer) –
MrPk
Ich möchte Mitglied hier für Chatroom werden. Also muss ich auch Raumbesitzer hinzufügen? Ich muss später Raummitglieder hinzufügen, also kann ich es nicht während der Erstellung von MUC Raum hinzufügen – Jennifer