Связь с клиентами через GAE - PullRequest
0 голосов
/ 04 января 2012

Каков наилучший способ связи между приложением Android (нативное приложение) и настольным приложением (клиент C # / Java) через GAE?Одним из способов, который я нашел, был Channel API.К сожалению, я не нашел никаких сценариев на стороне клиента, кроме Javascript, поддерживающих Channel API.Другим способом было создать статический класс и обмениваться данными через эти статические переменные.

Вот чего я хотел бы достичь:

  1. Я хочу, чтобы приложение Android отправляло сообщение наGAE.
  2. Это сообщение должно быть получено моим приложением для ПК (клиент C # / Java)
  3. Приложение для ПК должно вернуть ответ на это сообщение
  4. Ответ ПК должен быть отправлен в мобильное приложение.

На самом деле я пытаюсь выполнить команды в командной строке Windows со своего мобильного телефона.

Ответы [ 2 ]

1 голос
/ 04 января 2012

Как насчет:

Android <-> App Engine: C2DM

Вот хорошее видео об этом:

http://www.youtube.com/watch?v=M7SxNNC429U

C # /Java <-> App Engine: Http Post / Get, создайте сервлет http на стороне ядра приложения.И стандартный http запрос на c # / java.

Вот блог о стороне сервлета:

http://zawoad.blogspot.com/2010/04/how-to-call-servlet-in-gwt.html

0 голосов
/ 05 января 2012

По сути, это так:

  • Обработчик GAE получает сообщения с мобильного устройства через http и сохраняет их в хранилище данных.Вот пример запроса, который выполняется мобильным устройством через http:

    POST http://myapp.appspot.com/messages
    Content-type: application/json
    
    {"message":"Message from mobile device","userid":"myuserid",[other data..]}
    
  • Настольное приложение отправляет повторяющиеся запросы (каждые 10 секунд или около того) в GAE через http.Обработчик GAE выдаст пустой ответ, если новых сообщений нет, но если сообщение пришло, сообщение загружается из хранилища данных и передается по http, поэтому ваше приложение получит его.Вот пример запроса:

    GET http://myapp.appspot.com/messages?last_message_id=...
    

    Пример запроса к базе данных:

    SELECT * FROM messages WHERE message_id > LAST_MESSAGE_ID
    

    Пример ответа:

    Content-type: application/json
    
    [{'id':1, 'message':'Message 1 from mobile device','userid':1},
     {'id':2, 'message':'Message 2 from mobile device','userid':1}]
    

С Channel-API,можно сделать один длинный запрос (длинный опрос) вместо множества повторяющихся каждые 10 секунд.Он более эффективен, но его будет сложнее реализовать, если библиотек не существует.

Я не могу рекомендовать вам конкретные библиотеки, потому что я не пишу код на C # или Java, но все, что вам нужно, это библиотека, которая можетсделать http-запросы, а также библиотеку, которая кодирует и декодирует данные в выбранном вами формате.Кодировка данных JSON используется в моем примере.

...