В чем разница между Websocket,Server Sent Events (SSE) и сервером HTTP2?

может кто-то кратко о разнице между этими looking-similar методы?

  • Websocket
  • сервер отправил события (SSE)
  • http2, на сервере толкая

Я знал, что все эти 3 являются " pushing" ответ от сервера запрос клиента.

на первый взгляд, Кажется, все же.Мне нужно больше ясности. разница.

1 ответов


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

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

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