Соедините два приложения для Android через http REST и EJB3

1

Я пишу приложение для Android, где два устройства должны общаться между собой через Интернет. В дополнение к этой задаче они также взаимодействуют с сервером EJB3 через REST. Поэтому я решил убить двух зайцев одним выстрелом и использовать REST + EJB3 для передачи данных между двумя парными устройствами Android. Таким образом, сценарий, который я реализовал, выглядит примерно так:

  • Оба устройства подключаются к серверу и получают идентификатор сеанса.
  • Первое устройство отправляет данные на второе устройство
  • Сервер получает данные, но не завершает HTTP-запрос, вместо этого он помещается в ожидающий пул
  • Второе устройство запрашивает данные
  • Сервер передает данные на второе устройство и освобождает ожидающее соединение (и поток) для первого устройства.
  • Если нет первых или вторых запросов устройства, то противник ждет тайм-аута на стороне сервера, а затем снова отправляет запрос. Нам нужно дождаться, когда данные на стороне сервера дадут немедленный ответ после того, как данные будут получены.

Итак, в этой схеме я вижу два недостатка: - Ожидание потока на стороне сервера - они потребляют ресурсы сервера и в качестве результата ограничивают пропускную способность сервера - Если поток сервера не будет ждать ответа с тайм-аутом, то клиент должен повторять запросы вкл. И тратить много трафика.

Какое оптимальное решение для такой проблемы?

P.S: Забыл упомянуть, что два устройства должны обмениваться данными как можно плавно и быстро.

Теги:
rest
ejb-3.0

1 ответ

2
Лучший ответ

Вам нужно будет использовать C2DM http://android-developers.blogspot.com/2010/05/android-cloud-to-device-messaging.html

Когда сообщение должно быть отправлено с A на B - A должно подключаться к серверу и в зависимости от типа/количества данных - сервер будет либо передавать данные через C2DM, либо просто сообщить устройству B вернуться и захватить данные.

Я бы сохранил данные на сервере в любом случае. Если push не удался - вы можете повторить попытку. Не нужно изобретать велосипед. Большинство проблем/проблем, уже разрешенных в C2DM

  • 0
    Спасибо за ссылку, но что делать, если мне нужно запустить приложение на Android начиная с версии 1.6. Насколько я понял, поддержка C2DM добавлена только в версии 2.2 ...
  • 0
    Без толчка - вы не можете выполнить требование «гладко и быстро». Вы можете записывать данные на сервер с помощью устройства A, но затем устройство B должно периодически извлекать данные для обновления. Делая это часто убьет батарею прямо там. И насколько я знаю, вы не можете полагаться на связь между устройством и сервером. IP-адрес может меняться, беспроводная связь включается и выключается и т. Д.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню