2017-02-17 3 views
0

Я использую smack-клиент в своем приложении чата. Все будет хорошо, но когда соединение по какой-то причине прерывается, мой сервер показывает онлайн для этого пользователя JID.Пользователь по-прежнему доступен в сети, хотя пользователь не подключен к серверу. И не удалось подключиться к серверу

Моя проблема заключается в том, что снова подключиться к серверу после отключения. Я могу поймать соединение, используя метод connection.isAuthenticated() в моем потоке обслуживания. Но не удалось подключиться к серверу.

ответ

0

вы можете включить модуль mod_ping на стороне сервера (ejabberd), чтобы преодолеть проблему онлайн, если клиент отключился, но все же показывается онлайн. Это связано с тем, как работает TCP/IP и не является специфичным для ejabberd. Как правило, Linux настроен на обнаружение потери соединения после чего-то вроде 2 часов, а клиентская сторона использует ReconnectionManager для повторного подключения приложения к серверу ejabberd или вы можете определить свой собственный обработчик для отслеживания активного соединения, если он не подключен к серверу, к которому вы можете подключить его снова. Как включить mod_ping здесь - https://docs.ejabberd.im/admin/configuration/#modping

Смежные вопросы