Я использую Smack 4.1.1 как зависимость от Gradle в моем проекте Android.Smack MultiUserChatManager создает не соединяемую комнату
Я успешно установил соединение с моим локальным сервером OpenFire.
Но у меня есть проблема при создании Временный номер от клиента Android.
final MultiUserChat multiUserChat = userChatManager.getMultiUserChat(roomId);
try {
multiUserChat.create(connection.getUser());
LOG.debug("room created");
} catch (XMPPException.XMPPErrorException | SmackException e) {
LOG.error("create room error:{}", e);
}
try{
multiUserChat.sendConfigurationForm(new Form(DataForm.Type.submit));
} catch (SmackException.NoResponseException | XMPPException.XMPPErrorException | SmackException.NotConnectedException e) {
LOG.error("sending room configurations error:{}", e);
}
Самое замечательное, что я вижу, что эта комната была создана в панели администратора OpenFire и получает информацию о месте от другого клиента.
try {
MultiUserChatManager userChatManager = MultiUserChatManager.getInstanceFor(connection);
RoomInfo info = userChatManager.getRoomInfo(roomId);
LOG.debug("room has {} occupants", info.getOccupantsCount());
joinToExistingRoom(roomId);
} catch (XMPPException.XMPPErrorException e) {
LOG.error("join room error:{}", e);
final XMPPError.Condition condition = e.getXMPPError().getCondition();
if (condition == XMPPError.Condition.item_not_found) {
LOG.error("room does not exist error:{}", e);
createRoom(roomId);
}
}
Но при попытке присоединиться к комнате от второго клиента я получаю XMPPError: получатель-недоступен - ждать.
Отрывок моего joinRoom метод:
final MultiUserChat multiUserChat = userChatManager.getMultiUserChat(roomId);
try {
multiUserChat.join(connection.getUser());
LOG.debug("joined to room:{}", roomId);
} catch (SmackException.NoResponseException
| XMPPException.XMPPErrorException
| SmackException.NotConnectedException e) {
LOG.error("error joining room {}", e);
}
Так я ловя ошибки присоединения номер org.jivesoftware.smack.XMPPException $ XMPPErrorException: XMPPError: реципиент-недоступен - ждите
So вопрос в том, что может быть неправильным? Я также пробовал создать submitForm от createAnswerForm() метод. Но результат тот же.
Одно решение, которое я нашел, чтобы сделать его работу, чтобы отправить persistantroom, как истинный в Ответ формы конфигурации. Но этот метод создает постоянную комнату, хотя мне нужна эта комната для уничтожения после того, как все участники покинут комнату.
Возможно, это простая проблема, но теперь я не знаю, как решить эту проблему.
Помощь будет оценена по достоинству.
Заранее спасибо.