В течение времени ожидания ответа не получено. Smack 4.2.0 muc.join()

Я реализовал MultiuserChat в моем проекте.

Когда я впервые присоединяюсь к группе, она работает нормально. Но появляется ошибка, когда я присоединяюсь, присоединяюсь к группе после переподключения.

Код присоединяемой группы:

Resourcepart mResourcepart = Resourcepart.from(XmppManager.getInstance().getNickName());

MucEnterConfiguration.Builder builder = muc.getEnterConfigurationBuilder(mResourcepart);

long latOnlineTime = SharedPref.getLong(LAST_ONLINE_TIME, 0);

if (latOnlineTime > 0) {
      long diffMill = System.currentTimeMillis() - latOnlineTime;
      JLog.e(MUC_TAG, "SECONDS:" + diffMill / 1000);
      builder.requestHistorySince((int) (diffMill / 1000));
 } else {
      JLog.e(MUC_TAG, "No History INSIDE");
      builder.requestNoHistory();
 }

MucEnterConfiguration mucEnterConfiguration = builder.build();
muc.join(mucEnterConfiguration);

ошибка

 org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. 
Timeout was 10000ms (~10s). Waited for response using: AndFilter: (StanzaTypeFilter: Presence, OrFilter: 
(AndFilter: (FromMatchesFilter (ignoreResourcepart): 9876543210@conference.ip-172-31-14-114.sa-east-1.compute.internal, 
MUCUserStatusCodeFilter: status=110), AndFilter: (FromMatchesFilter (full): 
9876543210@conference.ip-172-31-14-114.sa-east-1.compute.internal/9876543211, StanzaIdFilter: id=iAnSi-10, PresenceTypeFilter: type=error))).

at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:253)
at org.jivesoftware.smackx.muc.MultiUserChat.enter(MultiUserChat.java:346)
at org.jivesoftware.smackx.muc.MultiUserChat.join(MultiUserChat.java:702)
at com.myguei.xmpp.XmppService.getMultiUserChatConfig(XmppService.java:3069)
at com.myguei.xmpp.XmppService.getMultiUserChat(XmppService.java:2970)
at com.myguei.xmpp.XmppService.joinToGroup(XmppService.java:655)
at com.myguei.xmpp.XmppService.access$700(XmppService.java:165)
at com.myguei.xmpp.XmppService$6.run(XmppService.java:619)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)

Не могли бы вы мне помочь

1 ответ

@bhavesh

После создания группы вы назначаете членство в реестры.

Положил muc1.grantOwnership(membersJid); вместо muc1.grantMembership(membersJid);

Это решит вашу проблему, сделав всех членов группы (MUC) владельцем.

org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout

Как правило, это исключение возникает, когда присутствие пользователя не обновляется на сервере Openfire и он пытается присоединиться к комнате.

Поэтому обновите свое присутствие (недоступно) с помощью onStop() и установите свое присутствие (доступно) с помощью OnResume().

Тем не менее, вы получаете это исключение, затем по исключению отправляете присутствие пользователя "Недоступно" на сервер Openfire, а через 1-2 секунды отправляете присутствие "Доступно", а затем присоединяетесь к группе.

Другие вопросы по тегам