K. *_*zyk 3 http server-sent-events http2
到目前为止我只使用 HTTP/1.1,但最近我切换到 HTTP/2。在 1.1 上,我遇到了请求数量限制问题,但 HTTP/2 使用一个连接与多路复用,这是否意味着我可以保持多个 SSE 通道打开而没有问题,还是应该只使用一个具有某些内部消息路由解决方案的通道?
如果您想安全:仅使用一个通道或仅使用几个通道并在内部进行多路复用。
更长的答案:更多通道导致 HTTP/1.1 出现问题的原因是每个通道都需要一个专用的 TCP 连接,而浏览器限制了每个选项卡的并发 TCP 连接数(我认为大约 10 个)。使用 HTTP/2 可以在单个连接上并发 HTTP 请求。因此,更有可能打开多个并发 SSE 流。然而,浏览器(以及网络服务器)可能仍会限制它们通过 TCP 连接支持的并发 HTTP/2 流的数量。HTTP/2 甚至通过允许 HTTP/2 设置中的每个对等点通信它支持的最大并发流数量来支持这一点(SETTINGS_MAX_CONCURRENT_STREAMS)。为了安全起见,您需要弄清楚目标浏览器和 Web 服务器支持和使用较少数量的 SSE 流的限制是多少。不幸的是,我不知道它是否是任何 HTML 或浏览器规范的一部分,它们都应该支持至少明确指定数量的 HTTP/2 并发请求。如果您保持较低的请求数量,则可以避免遇到问题。
仅使用少数通道的另一个优点是您仍然可以很好地支持 HTTP/1.1 客户端。不仅是那些可能直接连接到你的服务器的,还有那些可能通过代理服务器连接的(这意味着连接浏览器<->代理使用 HTTP/1.1,代理<->网络服务器使用 HTTP/2)。
| 归档时间: |
|
| 查看次数: |
1239 次 |
| 最近记录: |