Я пытаюсь присоединиться к MultiUserChat, используя Smack на Android. В настоящее время я могу прекрасно общаться с 1-на-1, и я подключаюсь к серверу, пока я показываю его онлайн. Я следовал приведенным примерам here.Android Smack дает timeoutexception при подключении MultiUserChat
У меня есть следующий код, чтобы присоединиться к MultiUserChat
(MUC).
final XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword(user.getUsername(), user.getJabberPassword())
.setServiceName("app.buur.nu")
.setHost("app.buur.nu")
.setPort(5222)
.build();
AbstractXMPPConnection connection = new XMPPTCPConnection(config);
String room = "testroom";
MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection);
MultiUserChat muc = manager.getMultiUserChat(room + "@groups.app.buur.nu");
try {
muc.join(user.getUsername(), null, null, connection.getPacketReplyTimeout());
} catch (SmackException.NoResponseException e) {
e.printStackTrace();
} catch (XMPPException.XMPPErrorException e) {
e.printStackTrace();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
Но это дает мне org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 5000ms (~5s). Used filter: AndFilter: (FromMatchesFilter (full): [email protected]/test, StanzaTypeFilter: org.jivesoftware.smack.packet.Presence).
Я пытался увеличить время ожидания до 10000 мс, но я все еще получаю тайм-аут. Что здесь может быть не так? Создание 1-на-1 чатов работает отлично и connection.isConnected())
возвращает значение ИСТИНА ...
Так получается, что я получаю ошибку
<presence to="app.buur.nu/7c65be6" id="lgcSp-4" type="error"><x xmlns="http://jabber.org/protocol/muc"/><c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="http://www.igniterealtime.org/projects/smack" ver="os2Kusj3WEOivn5n4iFr/ZEO8ls="/><error code="401" type="auth"><not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></presence>
В принципе, аутентификация не завершена, когда я Я пытаюсь войти в комнату. Можно ли добавить слушателя для получения обновления после завершения проверки подлинности? Я видел https://www.igniterealtime.org/builds/smack/docs/latest/javadoc/org/jivesoftware/smack/SASLAuthentication.html#authenticate%28java.lang.String,%20javax.security.auth.callback.CallbackHandler%29, но реализация моего собственного механизма аутентификации кажется немного переполненным ...
Нет ли onAuthenticationCompletedListener
или что-то в этом роде?
След строфы был бы проницательным. Посмотрите на https://github.com/igniterealtime/Smack/wiki/How-to-ask-for-help,-report-an-issue-and-possible-solve-the-problem-yourself – Flow
@Flow будет update my post – Gooey
Присутствие отсутствует атрибут 'from'. Какая реализация предоставляет услугу MUC? – Flow