Как отправить ping с помощью MQTT-клиента Eclipse Paho?

Мы только начали создавать собственную систему push-уведомлений (в связи с требованиями клиента)для Android и нашли Eclipse Paho(http://www.eclipse.org/paho/). Излишне говорить, что этот проект действительно захватывающий.

Проблема с Android заключается в том, что если ЦП находится в спящем режиме, у клиента MQTT может не быть возможности отправить эхо-запрос с заданным интервалом. Обходной путь — использовать AlarmManager, чтобы разбудить его и выполнить работу. В документации по Android говорится :

. Менеджер аварийных сигналов удерживает блокировку пробуждения ЦП до тех пор, пока Выполняется метод получателя onReceive(). Это гарантирует, что телефон не будет спать, пока вы не закончите обработку трансляции. Как только onReceive()возвращается, диспетчер сигналов тревоги снимает эту блокировку пробуждения. Это означает, что в некоторых случаях телефон перейдет в спящий режим, как только вы Метод onReceive()завершается.

http://developer.android.com/reference/android/app/AlarmManager.html

Мне нужно быть уверенным, что я могу отправить команду ping в рамках этого метода onReceive(), когда процессор имеет ЧАСТИЧНУЮ_WAKE_LOCK, поэтому я искал способ вручную отправить ping на сервер, но это кажется, что клиент не предоставляет такой метод. Я что-то упускаю? Или какой обходной путь здесь, кроме публикации моего собственного «сообщения ping»? Я хочу избежать этого из-за:

  1. больших накладных расходов
  2. Мы обеспечим, чтобы клиенты Android были только подписчиками, возможно, с ACL Mosquitto. Им не будет разрешено публиковать сообщения.

11
задан Mehdi 10 August 2014 в 16:30
поделиться