Можно ли использовать HTTP для отслеживания соединений? - PullRequest
3 голосов
/ 25 июля 2011

Я знаю, что есть некоторые споры относительно того, является ли HTTP строго ориентированным на соединение или без установления соединения. AFAIK, HTTP поддерживает соединение только достаточно долго, чтобы передать серию немедленных запросов. Недавно мы с архитектором, сертифицированным Microsoft, обсуждали способ передачи обновлений «подключенным» клиентам.

Представьте себе игру в шашки. Если player1 делает ход, player2 должен быть уведомлен. С HTTP (без TCP / UDP) единственным известным мне способом является опрос. Архитектор не согласился со мной.

Итак, как вы можете отправлять обновления «подключенным» клиентам, используя только HTTP?

Ответы [ 2 ]

5 голосов
/ 25 июля 2011

На данный момент есть 2 решения для этого:

  • WebSockets обеспечивают истинный обратный вызов, но не получили широкого распространения
  • Используйте реализацию Comet (например, WebSync ). Это использует опрос.
0 голосов
/ 25 июля 2011

На уровне HTTP вы можете передавать данные, которые клиент может получить, не указывая Content-Length или закрывая соединение. Некоторые клиенты / серверы имеют тайм-аут «без данных», поэтому отправка периодического сообщения активности является хорошей идеей. Ответы должны быть в другом HTTP-запросе.

Расширением потока является клиент, устанавливающий соединение, а сервер не отправляет никаких данных, пока что-то не готово. Затем клиент обрабатывает ответ и немедленно снова подключается к следующему чанку.

...