Каков наилучший способ реализовать 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 причины вкратце,
- Доставка гарантируется вне зависимости от временного отсутствия в сети или длительных задержек.
- Так же просто, как подписка / публикация, больше не нужно беспокоиться о транспортном уровне.
- Брокер доступен онлайн. Вы экономите время и деньги на настройку самостоятельно.
Для мобильных устройств, как и в вашем случае, я бы тоже отдавал приоритет MQTT. Это легкий и стабильный. Если вы совершенно новичок в очереди сообщений или MQTT, обратитесь к этой документации и коду примера