Я пишу приложение для Android, где два устройства должны общаться друг с другом через Интернет.В дополнение к этой задаче они также общаются с сервером EJB3 через REST.Поэтому я решил убить двух зайцев одним выстрелом и использовать REST + EJB3 для передачи данных между двумя сопряженными устройствами Android.Итак, сценарий, который я реализовал, выглядит примерно так:
- Оба устройства подключаются к серверу и получают идентификатор сеанса.
- Первое устройство отправляет данные на второе устройство
- Сервер получает данные, но не завершает запрос http, вместо этого он помещает в пул ожидания
- Второе устройство запрашивает данные
- Сервер передает данные на второе устройство и освобождает ожидающее соединение (иthread) для первого устройства.
- Если нет запросов на первое или второе устройство, тогда противник ожидает тайм-аут на стороне сервера, а затем снова отправляет запрос.Нам нужно дождаться, чтобы данные на стороне сервера немедленно восстановились после получения данных.
Итак, в этой схеме я вижу два недостатка: - ожидание потока на стороне сервера - они потребляют ресурсы сервераи как результат ограничение пропускной способности сервера - если поток сервера не будет ждать ответа с тайм-аутом, то клиент должен повторять запросы и тратить много трафика.
Что лучшеПрактическое решение для такой проблемы?
PS: Забыл упомянуть, что два устройства должны обмениваться данными как можно более плавно и быстро.