当使用HTML5 EventSource对象通过SSE进行请求时,这些请求会利用HTTP/2多路复用/管线化特性吗?特别是,不同标签页中的SSE请求是否会重用同一个HTTP/2连接?
我认为会,因为SSE基于(据我所知)HTTP/1.1分块编码技术,但还想确认一下。
当使用HTML5 EventSource对象通过SSE进行请求时,这些请求会利用HTTP/2多路复用/管线化特性吗?特别是,不同标签页中的SSE请求是否会重用同一个HTTP/2连接?
我认为会,因为SSE基于(据我所知)HTTP/1.1分块编码技术,但还想确认一下。
是的,它们会。Chrome的http2标签是探索如何发出http2请求的好方法:chrome://net-internals/#http2。
对于由SSE发出的请求,您应该看到类似以下内容:
HTTP2_SESSION_SEND_HEADERS
--> exclusive = true
--> fin = true
--> has_priority = true
--> :method: GET
:authority: h2.example.org
:scheme: https
:path: /demo_sse.php
accept: text/event-stream
cache-control: no-cache
referer: https://h2.example.org/
accept-encoding: gzip, deflate, sdch, br
accept-language: en-US,en;q=0.8,fr;q=0.6,es;q=0.4
--> parent_stream_id = 0
--> priority = 1
--> stream_id = 7
XmlHttpRequest2
对象上实现了SSE,所以答案应该是一样的。