当使用HTTP/2时,我能否拥有多个打开的SSE通道?

4

到目前为止,我只使用了HTTP/1.1,但最近我切换到了HTTP/2。在使用1.1时,我遇到了请求数量限制问题,但是HTTP/2使用多路复用的方式使用一个连接,这是否意味着我可以保持多个SSE通道处于打开状态而不会遇到问题,或者我仍然应该只使用一个,并使用一些内部消息路由解决方案?

1个回答

6
如果你想要更加安全:只使用一个或者少数几个通道,并且在内部进行复用。
长一些的回答:HTTP/1.1存在的问题是,每个通道需要一个专门的TCP连接,而浏览器对于每个标签页限制了并发TCP连接的数量(我认为大约是10个)。由于HTTP/2可以基于单个连接进行并发HTTP请求,所以开启多个并发的SSE流更有可能成为可能。然而浏览器(还有web服务器)仍然可能会限制它们支持的并发HTTP/2流的数量。HTTP/2甚至通过允许HTTP/2设置中的每个同级通信最大并发流量(SETTINGS_MAX_CONCURRENT_STREAMS)来支持这一点。为了保险起见,你需要确定目标浏览器和web服务器支持的限制,并且使用更低数量的SSE流。不幸的是,我不知道是否HTML或浏览器规范的一部分,即它们都应该支持HTTP/2上的至少一定数量的并发请求。如果你保持请求数量较低,就可以避免遇到问题。
只使用少数几个通道的另一个优点是,你仍然可以很好地支持HTTP/1.1客户端,不仅包括直接连接到你的服务器的客户端,还包括通过代理服务器连接的客户端(这意味着浏览器<->代理之间的连接使用HTTP/1.1,而代理<->web服务器之间的连接使用HTTP/2)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接