如何实现全双工?
HTTP 本身是基于请求-响应模式的半双工协议,同一时刻,数据只能单向流动;
-
HTTP 轮询
-
协议升级使用websocket: 全双工
-
SSE :单向服务端实时推送
-
HTTP2 的服务器推送机制: 不是真正的全双工
HTTP2服务端推送机制:允许服务器 主动向客户端推送资源,利用HTTP2的多路复用,二进制帧的特性;主要目的是优化效率;服务端会预判客户端会用到的资源主动推送;
但这并不是真正的全双工, 它允许在一个 TCP 连接上同时发送多个请求和响应,这些请求和响应的数据流是相互独立的,可以交错发送和接收; 以一个网页加载为例,在 HTTP/2 中,浏览器可以同时请求 HTML 文件、CSS 文件、JavaScript 文件和图片等资源,服务器可以同时发送这些资源的响应,而不是像 HTTP/1.1 那样需要等待一个请求 - 响应完成后再进行下一个。