Я пишу приложение для Android, где два устройства должны общаться между собой через Интернет. В дополнение к этой задаче они также взаимодействуют с сервером EJB3 через REST. Поэтому я решил убить двух зайцев одним выстрелом и использовать REST + EJB3 для передачи данных между двумя парными устройствами Android. Таким образом, сценарий, который я реализовал, выглядит примерно так:
Итак, в этой схеме я вижу два недостатка: - Ожидание потока на стороне сервера - они потребляют ресурсы сервера и в качестве результата ограничивают пропускную способность сервера - Если поток сервера не будет ждать ответа с тайм-аутом, то клиент должен повторять запросы вкл. И тратить много трафика.
Какое оптимальное решение для такой проблемы?
P.S: Забыл упомянуть, что два устройства должны обмениваться данными как можно плавно и быстро.
Вам нужно будет использовать C2DM http://android-developers.blogspot.com/2010/05/android-cloud-to-device-messaging.html
Когда сообщение должно быть отправлено с A на B - A должно подключаться к серверу и в зависимости от типа/количества данных - сервер будет либо передавать данные через C2DM, либо просто сообщить устройству B вернуться и захватить данные.
Я бы сохранил данные на сервере в любом случае. Если push не удался - вы можете повторить попытку. Не нужно изобретать велосипед. Большинство проблем/проблем, уже разрешенных в C2DM