Я использую ниже программное обеспечение для приложения чата для AndroidOpenfire: не в состоянии послать пакет через несколько (2-3) часов, даже если я уже подключенных к серверу Openfire
- XMPP сервер: Openfire 3.9.3
- XMPP Клиент: Asmack-android-8-4.0.4.jar
Я столкнулся некоторые странное поведение сервера Openfire при изменении присутствия вошедшего в систему пользователя вручную.
Ниже кусок кода из моего класса
xmppConfig.setSendPresence(false);
// Call first time only while configuration connection
presence = new Presence(Type.available, Constant.STATUS_ONLINE, 1, Mode.available);
// Code to change the presence of user
connection.sendPacket(presence);
Нормальные журналы, где я могу изменить присутствие пользователя (я проверил на портале Openfire и она работает, как принято):
SENT (1): <presence id='z13q2-27'><status>online</status></presence>
RCV (1): <presence id="z13q2-26" from="[email protected]**********.com/Smack"
to="[email protected]**********.com/Smack"><status>online</status></presence>
Через несколько (2-3) часов, когда я вернусь к приложению и пытаюсь установить присутствие в Интернете (I сп ecked на портале Openfire, и этот пользователь показывает присутствие в автономном режиме, даже если я установил присутствие в Интернете).
SENT (1): <presence id='z13q2-27'><status>online</status></presence>
//**** No packet replay of change presence *********
Я проверил ниже значения после вышеуказанного сценария, чтобы проверить, если пользователь все еще подключен, но я получил результат ниже, который указывает на то, что соединение жив, и пользователь все еще подключен, но в то же самое время (веб) портала Openfire показывает, что пользователь отсутствует,
xmppManager.getConnection().isConnected() //Result(true)
xmppManager.getConnection().isAuthenticated() //Result(true)
xmppManager.getConnection().isAnonymous() //Result(false)
Я не могу отправить сообщение кому-то и не получить сообщение после того, как над сценарием.
SENT (0): <message id='9388u-21' to='[email protected]*********.com' type='chat'>
<subject>nullMedia</subject><body>Test message</body><custom_data>
<aliasNmae>Robine H.</aliasNmae><profilePicUrl></profilePicUrl>
</custom_data><request xmlns='urn:xmpp:receipts'/></message>
Выше журнал, когда я отправить сообщение после вышеуказанного сценария, и здесь <custom_data>
моего заказа продолжение.
Даже когда я проверяю историю в Openfire, после описанного выше сценария нет сообщений.
Я не уверен, есть ли возможность сохранить долгоживущую соединения через сервер Openfire (веб-портал) или я делаю что-то здесь не так с клиентом XMPP.
Прошу вас, если у кого-нибудь возникнут некоторые мысли об этой странной ситуации.
Я вижу, как насчет PingFailedListener? я предполагаю, что это может быть indenftiy, когда пинг не получает понг. – dhams
pingManager.pingMyServer() дает мне NullPointerException. Это полная трассировка org.jivesoftware.smackx.ping.PingManager.pingMyServer (PingManager.java:244) 10-22 16: 05: 47.414: E/AndroidRuntime (7101): \t на org.jivesoftware.smackx.ping. PingManager.pingMyServer (PingManager.java:220) 10-22 16: 05: 47.414: E/AndroidRuntime (7101): \t at com.demo.DemonServices $ 2.run (DemonServices.java:74) 10-22 16: 05: 47.414: E/AndroidRuntime (7101): \t at java.lang.Thread.run (Thread.java:841) – dhams
Я понял, что ошибка, диспетчер пинга не был инициализирован, я пришел с этой проблемой, но я Не поймите, почему менеджер пинга перестает выходить из строя после определенного интервала? Делает ли андроид что-то, чтобы убить runnable thread? – dhams