Клиент (Android) получать сообщения с сервера (Java) - PullRequest
1 голос
/ 18 сентября 2011

Я пытаюсь создать приложение чата.Связь основана на веб-сервисах RESTful (Джерси).Клиент связывается с сервером, отправляющим HTTP-запросы.Моя проблема заключается в том, как отправлять сообщения с сервера на клиент без предварительной отправки запроса клиентом.Я читал об уведомлениях C2DM, я полагаю, используя этот способ, когда клиент получает уведомление от сервера, то (клиент) должен отправить запрос на сервер для получения данных.Я также думал об использовании сокетов, но я не знаю, возможно ли это, поскольку я использую Rest.Я имею в виду, что на стороне сервера я могу также использовать сокеты (сокеты, работающие на более низком уровне) с кодом REST?Единственное, что у меня есть, хотя это может работать с использованием сокетов, - это создать еще один сервер с сокетом (два сервера RESTful и сокет), но действительно ли это хорошее решение?Также я мог бы поместить некоторый код сервера на стороне клиента и некоторый код клиента на стороне сервера.Будет ли это правильно и эффективно?Как вы думаете?Какое решение будет лучшим?

Ответы [ 2 ]

5 голосов
/ 05 октября 2012

C2DM было официально объявлено устаревшим с 26 июня 2012 года Google. Существующим разработчикам C2DM рекомендуется перейти на новую версию C2DM, которая называется Google Cloud Messaging для Android (GCM).

Проверьте эту ссылку для получения дополнительной информации

http://developer.android.com/guide/google/gcm/index.html

1 голос
/ 19 сентября 2011

Сценарий, который вы описываете, звучит идеально для C2DM. Если вы создадите свои собственные сокеты, вы потратите ресурсы батареи и процессора, делая то, что уже делает телефон - поддерживая открытый сокет для приема сообщений.

C2DM относительно прост в настройке, и по моему опыту довольно надежен.

Это лучший урок, который я видел на нем:

http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html

Но вы также должны прочитать официальные документы:

http://code.google.com/android/c2dm/

Ваш серверный код должен будет отправить HTTP-запрос на серверы C2DM, чтобы отправить сообщение на устройство. Чтобы указать, куда отправлять сообщение, вашему серверу необходимо указать Идентификатор регистрации (который представляет ваше приложение, работающее на одном конкретном устройстве), и поэтому, когда ваше приложение настраивается на устройстве Android, оно регистрируется в C2DM, а затем должно отправить его регистрационный идентификатор C2DM на вашем сервере, который будет сохранен, готов к использованию для отправки сообщений.

...