Я создаю собственные мобильные приложения как для iOS, так и для Android. Эти приложения требуют "реального времени" обновлений с сервера и на сервере, как и любое другое сетевое приложение (Facebook, Twitter, социальные игры, такие как "Слова с друзьями" и т.д.).
Я думаю, что использование длинного опроса HTTP для этого - это убийство в том смысле, что длительный опрос может нанести ущерб времени автономной работы, особенно с большим количеством настроек TCP/срыва. Возможно, имеет смысл заставить мобильные приложения использовать постоянные сокеты TCP для установления соединения с сервером и отправлять команды стиля RPC на сервер для всех сообщений веб-службы. Это, конечно же, потребует от сервера обработки долговременного TCP-соединения и возможности говорить с веб-службой после того, как он будет разбираться в данных, передаваемых по TCP-каналу. Я думаю о передаче данных в виде простого текста с использованием JSON или XML.
Возможно, RPC-сервер, основанный на Erlang, будет полезен для такого сетевого приложения. Это позволило бы мобильным приложениям отправлять и получать данные с сервера по одному соединению без нескольких настроек/отрыва, которые могли бы выполнять отдельные HTTP-запросы, используя что-то вроде NSURLConnection на iOS. Поскольку веб-браузер не задействован, нам не нужно иметь дело с нюансами HTTP на уровне мобильного клиента. Многие из этих серверов COMET и long-poll/streaming построены с учетом HTTP. Я думаю, что просто использование протокола с обычным текстом через TCP достаточно хорошо, сделает клиента более отзывчивым, позволит получать обновления с сервера и сохраняет время автономной работы над традиционными длинными опросами и потоковыми моделями.
Кто-нибудь сейчас делает это с помощью своего родного приложения для iOS или Android? Вы пишете свой собственный сервер или там что-то открытое, что я могу начать работать сегодня, а не изобретать колесо? Есть ли причина, по которой использование только RPC-службы на основе TCP хуже, чем использование HTTP?
Я также рассмотрел конвейерную обработку HTTP, но не стоит беспокоиться о том, как это реализовать на клиентах. Кроме того, я не уверен, что это позволит двунаправленную связь в канале связи клиента и канала.
Любое понимание было бы весьма полезным.