2016-10-20 8 views
7

Может ли кто-нибудь объяснить разницу между этими похожими методами?В чем разница между Websocket, Server Sent Events (SSE) и Push-сервером HTTP2?

  • WebSocket
  • Сервер послал событие (SSE)
  • http2 Сервер Раздвигая

Я знал все эти три являются "толкая" ответ от сервера вместо запрашивающего клиента ,

На первый взгляд, кажется, все же .I необходимость получить больше ясности о различиях.

ответ

14

Веб-узлы: асинхронная связь в обоих направлениях. Пока что не работает с HTTP/2, но предпринимаются усилия, чтобы сделать это так. (Например, WISH и websockets2-over-http2.)

SSE: сервер может уведомить обозреватель событий. Использует обычный HTTP и хорошо работает даже с HTTP/2. Можно эмулировать асинхронную связь в обоих направлениях с помощью SSE путем выдачи уведомлений с клиента на сервер с помощью регулярных запросов POST, в HTTP/2 эти запросы поступают в один и тот же сокет со всем остальным для одного и того же источника и, следовательно, стоимость установления нового соединения можно избежать. Однако на стороне сервера могут быть затраты на обработку для обработки запроса POST, который больше, чем использование собственных веб-узлов.

HTTP/2 Push: абсолютно не связанный с двумя выше, это механизм для того, чтобы сервер заранее загружал ресурсы в браузер. Возможное применение: sending CSSs and Javascripts while the PHP engine is creating the HTML. Теоретически, HTTP/2 Push и SSE могут быть объединены, чтобы сделать события доступными для браузера без первоначальной задержки в оба конца.

+0

Это классная короткая версия ... но она скрывает подводные камни и неточности в пользу предоставления хорошего обзора. Здесь есть дополнительная информация [здесь] (http://stackoverflow.com/a/28197906/4025095), [здесь ] (http://stackoverflow.com/questions/5195452/websockets-vs-server-sent-events-eventsource) и [здесь] (http://stackoverflow.com/questions/28582935/does-http-2-make -websockets-устаревшие) ... Кроме того, Websockets отлично работает с HTTP/2, возвращаясь к HTTP/1.1 во время рукопожатия. Прошлые попытки объединить HTTP/2 с Websockets были отменены, и хотя могут быть новые усилия, я не знаю никого. – Myst

+0

@Myst: См. Исправления Даниэля Стэнберга к моему ответу. WISH и websockets2-over-http2 обсуждаются в списке рассылки w3-wg. – dsign

 Смежные вопросы

  • Нет связанных вопросов^_^