Sundararaj Govindasamy Sundararaj Govindasamy - 1 year ago 97
HTTP Question

What is the difference between Websocket,Server sent events (SSE) and HTTP2's Server Pushing?

Can someone brief about the difference between these looking-similar techniques?


  • Websocket

  • Server sent events (SSE)

  • HTTP2's Server Pushing



I knew all these 3 are "pushing" response from server instead of requesting by the browser.

At the first look, it seems all are same.I need to get more clarity about the differences.

Answer Source

Websockets: asynchronous communication in both directions. So far doesn't work well with HTTP/2, but efforts are ongoing to make it so.

SSE: server can notify the browser of events. Uses normal HTTP and works well even with HTTP/2. It's possible to emulate asynchronous communication in both directions with SSE by issuing notifications from client to server via regular POST requests, in HTTP/2 these requests go in the same socket with everything else for the same origin and therefore the cost of establishing a new connection can be avoided. However, there may be processing costs on the server side for processing a POST request which are greater than using native websockets.

HTTP/2 Push: absolutely unrelated to the two above, it is a mechanism for a server to push assets to the browser in advance. Possible application: sending CSSs and Javascripts while the PHP engine is creating the HTML. In theory, HTTP/2 Push and SSE can be combined to make events available to the browser without the initial round-trip delay.