Работа с 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
.
Итак, вопросы: это правильный способ сделать это? можно улучшить?