2017-01-02 2 views
0

У меня есть служба, которая запускается каждый мин, чтобы проверить, подключен ли глобальный объект XMPPConnection и аутентифицирован. Я обнаружил, что через час или около того в режиме ожидания объект подключения показывает, что он подключен и аутентифицирован, но он не получает никаких сообщений.Android XMPP - не получает сообщения через час в режиме ожидания

Соединение, кажется, сломано без объекта Connection, зная об этом. Пожалуйста, дайте мне знать, что я могу реализовать, чтобы проверить, действительно ли объект XMPPConnection действительно подключен и может получать сообщения даже после долгого отсутствия бездействия.

Цените свою помощь.

+0

Вы уверены, что ваша служба работает в фоновом режиме? Я не уверен, что это проблема xmpp –

+0

Да, моя служба работает в фоновом режиме. Я написал фрагмент кода для создания файла каждый раз, когда он запускается вместе с меткой времени, и я вижу, что он создается каждый мин. И в файле я регистрирую значения isConnected() и isAuthenticated(), оба из них TRUE все время. Но они не получают. –

+0

как редко вы сталкиваетесь с этой проблемой? и какое обслуживание вы используете binderService или услугу –

ответ

-1

В зависимости от вашей реализации XMPP-сервера вы можете просто отправить сообщение себе и проверить, получаете ли вы его.

Другим способом было бы выполнить обнаружение службы XMPP, получить список ваших списков и т. Д., Вкратце - сделать что-то, что требует взаимодействия клиент-сервер.

+0

Каков оптимальный подход для отправки такого тестового сообщения - с точки зрения частоты, типа пинга и т. Д., Так что влияние на использование данных минимально? –

+0

Пустое сообщение по-прежнему является сообщением :), так как для использования данных всегда будет накладной XMPP Stanza (поэтому нет большой разницы между пингом и сообщением). Что касается частоты, выберите ту, которая соответствует вашим потребностям. 30 минут были бы разумными (так как у заявлено, что 60 минут - это предел), и я бы выполнил дополнительную проверку, когда приложение выходит на передний план. – Antoniossss

+0

Если у вас есть доступ к серверу, вы всегда можете написать свой собственный сервис xmpp, который будет делать все, что вам нравится. – Antoniossss

0

hi Если вы используете openfire, перейдите к настройкам сервера, затем подключите и измените настройки клиента на Do not disconnect clients that are idle.

Это поможет вам пользоваться всеми функциями.

Второе решение проблемы, если вы не используете какой-либо сервис для онлайн-подключения. Тогда сделайте это.

Здесь я сделал пример одного-одного чата, и он доступен на github.

спасибо, что это вам поможет.

+0

Привет.Спасибо за ваш ответ. Я уже установил эту настройку, и я вижу пользователя онлайн, когда я проверяю консоль администратора, но фактическое соединение не работает, поэтому объект соединения не получает никакого пинга. Я использую службу для подключения к серверу. Услуга также жива, что видно из записей журнала, которые она делает. –

+0

Можете ли вы проверить мой код на работоспособность. Вам что-то не хватает. – Saveen

+0

Конечно, я попробую это. Спасибо за ваше время. –

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