Каков наилучший способ реализовать push-приложение на стороне сервера для Android?

Я разрабатываю приложение для Android, которое требует 2 (или более) устройств для связи друг с другом. Я пытался с помощью Google Cloud Messaging но я был разочарован, узнав, что GCM Максимальная емкость составляет 100 сообщений, поэтому она не работает и не соответствует моим требованиям.

Я думал о java sockets, Каждое устройство откроет новый сокет (или оставит свой сокет открытым) и свяжется с группой сокетов (устройств).

Чтобы общаться таким образом, мне нужно серверное приложение, которое может отправлять сообщения клиенту (устройству Android). Итак, я понял, что HTTP или веб-сервис мне не поможет. Я прав?

Как лучше всего реализовать такое приложение на стороне сервера?

2 ответа

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

Создание сервера уведомлений Android

Я закончил тем, что не делал этого и в конце концов использовал GCM, но у меня было полностью работающее решение с использованием ActiveMQ и Paho. Вы можете исследовать их обоих и понять их внутреннюю работу. Это легко в принципе и определенно возможно, но проблема в том, что вы не сможете сделать это для iOS или же WP поскольку это требует запуска службы в фоновом режиме (если ваше приложение не открыто и вы хотите убедиться, что сообщения хотя бы отправлены в уведомлении).

Возможным решением этой проблемы будет использование службы уведомлений (GCM или эквивалентной) для фоновых уведомлений, а затем использование вашего MQ для фактической связи, но я решил, что это слишком много для моего проекта.

Если вы посмотрите на Paho, у него будет полностью работающее решение MQTT, которое будет работать, даже если телефон не подключен к сети (спит или иным образом), и имеется множество примеров ActiveMQ и драйверов для нескольких языков программирования.

Я думаю, что это решение намного лучше, чем наличие открытых сокетов между двумя приложениями, хотя бы потому, что они позволяют сохранять сообщения и гарантируют доставку, что является важным аспектом для приложения чата.

Как говорит kha, выбрать один из протоколов очереди сообщений - лучшее решение. 3 причины вкратце,

  1. Доставка гарантируется вне зависимости от временного отсутствия в сети или длительных задержек.
  2. Так же просто, как подписка / публикация, больше не нужно беспокоиться о транспортном уровне.
  3. Брокер доступен онлайн. Вы экономите время и деньги на настройку самостоятельно.

Для мобильных устройств, как и в вашем случае, я бы тоже отдавал приоритет MQTT. Это легкий и стабильный. Если вы совершенно новичок в очереди сообщений или MQTT, обратитесь к этой документации и коду примера

Другие вопросы по тегам