
20.01.2009, 00:32
|
|
Регистрация: Jan 2009
Сообщений: 5
|
Я бегло прочел эту тему. Там, вроде, решения для моей задачи нет.
В Java-клиенте я делал так: создавал один запрос на сервер и оставлял его подключенным. Сервер заранее не сообщал content-length и посылал сообщения по мере надобности + keep-alive сообщения (чтобы слишком умные прокси не убивали подключение по таймауту). Получается, что сервер шлет "бесконечный" ответ.
Для сообщений от _клиента_ я каждый раз создавал новое подключение, из-за этого счастье от постоянного первого подключения сводилось на нет. Это half-duplex (или simplex, как больше нравится).
Для full duplex по такому принципу нужно по 2 постоянных подключения на каждого пользователя, это довольно дорого. Есть еще альтернативные способы (ломиться на порт 443 с запросом CONNECT) но это тоже танцы с бубном.
Насчет протокола... Поверх HTTP придумать протокол обмена сообщениями не проблема. Если траффик не критичен, я бы использовал JSON (или XML) если критичен, то нужно использовать какую-нибудь бинарную сериализацию. В своем проекте я написал небольшой движок для сериализации, основанный на аннотациях... В принципе, я им полностью доволен.
На крайняк и JSON и XML отлично сжимаются ZIP. Алгоритм сжатия/распаковки не слишком прожорлив, должно сработать.
|