Постоянное соединение HTTP против соединения через сокет TCP
Из этой статьи в Википедии:
Сообщения поддержки активности официально не поддерживаются в HTTP 1.0. В HTTP 1.1 все соединения считаются постоянными, если не указано иное.
- Означает ли это, что с помощью этого механизма я могу смоделировать соединение через сокет TCP?
- Используя это, я могу заставить сервер "проталкивать" данные клиенту?
- Все ли HTTP-соединения, даже те, которые я использую для подключения к переполнению стека, "постоянны HTTP"?
- Использует ли технология COMET сервера push push этот механизм постоянного соединения HTTP для передачи данных клиентам?
2 ответа
- Означает ли это, что с помощью этого механизма я могу смоделировать соединение через сокет TCP?
Не совсем, сокеты имеют МНОГОЕ больше функций и гибкости.
- Используя это, я могу заставить сервер "проталкивать" данные клиенту?
Не напрямую, это все еще протокол запроса / ответа; Постоянное соединение означает, что клиент может использовать один и тот же базовый сокет для отправки нескольких запросов и получения соответствующих ответов.
- Все ли HTTP-соединения, даже те, которые я использую для подключения к переполнению стека, "постоянны HTTP"?
Если ваш браузер (или особый сервер) не говорит иначе, да.
- Использует ли технология COMET сервера push push этот механизм постоянного соединения HTTP для передачи данных клиентам?
Вроде (для потоковой передачи, по крайней мере), но с большим количеством взбитых сливок сверху. Существуют и другие подходы к реализации Comet, такие как скрытые iframes и длинный опрос AJAX, которые могут не требовать постоянных соединений (которые в любом случае дают некоторые брандмауэры и т.п.);
На самом деле, HTTP-сервер может "отправить" данные на подключенный http-клиент без запроса клиента. См. "HTTP server push" по адресу http://en.wikipedia.org/wiki/Push_technology. Однако это, кажется, обычно реализуется.