Websocket、Server Sent Events (SSE) 和 HTTP2 的 Server Pushing 有什么区别?
What is the difference between Websocket,Server Sent Events (SSE) and HTTP2's Server Pushing?
有人可以简要介绍一下这些外观相似技术之间的区别吗?
- 网络套接字
- 服务器发送的事件 (SSE)
- HTTP2 的服务器推送
我知道这 3 个都是来自服务器的“推送”响应而不是客户端请求。
乍一看,似乎都是相同。我需要更清楚地了解差异。
Websockets:双向异步通信。到目前为止,在 HTTP/2 上效果不佳,但正在努力做到这一点。 (例如WISH and websockets2-over-http2。)
SSE:服务器可以通知浏览器事件。使用普通的 HTTP,即使在 HTTP/2 下也能正常工作。通过常规 POST 请求从客户端向服务器发出通知,可以使用 SSE 模拟双向异步通信,在 HTTP/2 中,这些请求进入同一个套接字,其他所有请求都来自同一来源,因此可以避免建立新连接的成本。但是,服务器端处理 POST 请求的处理成本可能高于使用本机 websockets。
HTTP/2 推送:与以上两者完全无关,是服务器提前向浏览器推送资源的一种机制。可能的应用:sending CSSs and Javascripts while the PHP engine is creating the HTML。理论上,HTTP/2 推送和 SSE 可以结合起来,使事件对浏览器可用,而没有初始往返延迟。
有人可以简要介绍一下这些外观相似技术之间的区别吗?
- 网络套接字
- 服务器发送的事件 (SSE)
- HTTP2 的服务器推送
我知道这 3 个都是来自服务器的“推送”响应而不是客户端请求。
乍一看,似乎都是相同。我需要更清楚地了解差异。
Websockets:双向异步通信。到目前为止,在 HTTP/2 上效果不佳,但正在努力做到这一点。 (例如WISH and websockets2-over-http2。)
SSE:服务器可以通知浏览器事件。使用普通的 HTTP,即使在 HTTP/2 下也能正常工作。通过常规 POST 请求从客户端向服务器发出通知,可以使用 SSE 模拟双向异步通信,在 HTTP/2 中,这些请求进入同一个套接字,其他所有请求都来自同一来源,因此可以避免建立新连接的成本。但是,服务器端处理 POST 请求的处理成本可能高于使用本机 websockets。
HTTP/2 推送:与以上两者完全无关,是服务器提前向浏览器推送资源的一种机制。可能的应用:sending CSSs and Javascripts while the PHP engine is creating the HTML。理论上,HTTP/2 推送和 SSE 可以结合起来,使事件对浏览器可用,而没有初始往返延迟。