Работа с Smack 4.3.0 в многопользовательском чате ( XEP-0045-1.21 ) Я пытаюсь выяснить, была ли комната уже создана илинет, но я не уверен, что то, что я делаю, - правильный путь.У меня есть поиск, и самый относительный ответ на него был существует ли MUC? .
Технически говоря:
- Комнаты по умолчанию создаются как общедоступные и только для членов в OpenFire 4.2.0.
- Все имена комнат - это идентификаторы, определяемые именами участников в хеш-строке, то есть
XXXXXX029d8c36b62259d0eXXXXXXXX
.Это означает, что пользователь A может создать комнату с B, C и получить groupId
, как и предыдущий, но затем пользователь B (на другом устройстве) может попытаться создать ту же комнату (с пользователями A, B, C), котораясобирается дать ему то же groupId
. - Существовать уровень архитектуры, например, WhatsApp, так что пользователи могут оставить
Group Chat
и вернуться в любое время, когда они захотят.
Что я делаю в данный момент:
@WorkerThread
public boolean isGroupChatAlreadyCreated(@NonNull final String groupId)
throws
XmppStringprepException,
XMPPException.XMPPErrorException,
MultiUserChatException.NotAMucServiceException,
SmackException.NotConnectedException,
InterruptedException,
SmackException.NoResponseException {
List<HostedRoom> hostedRooms = manager.getHostedRooms(JidCreate.domainBareFrom(serviceDomain));
for (HostedRoom hostedRoom : hostedRooms) {
if (hostedRoom.getName().equalsIgnoreCase(groupId)) {
return true;
}
}
return false;
}
, где manager
- MultiUserChatManager manager
, а serviceDomain
- просто String
.
итак, вопросы : это правильный способ сделать это?это может быть улучшено?