2017-07-18 25 views
2

到目前为止,我只使用HTTP/1.1,但最近我切换到HTTP/2。在1.1版本中,我遇到了请求数量限制问题,但HTTP/2使用一个多路复用连接,这是否意味着我可以保持打开多个SSE通道而没有问题,还是应该只使用一个内部消息路由解决方案?使用HTTP/2时可以有多个开放的SSE频道吗?

回答

3

如果您想要安全:只使用一个通道或仅使用其中一部分通道并在内部多路复用。

较长的回答:更多的通道导致HTTP/1.1出现问题的原因是每个通道都需要一个专用的TCP连接,并且浏览器限制每个选项卡的并发TCP连接数(我认为约为10)。使用HTTP/2可以在单个连接上进行并发HTTP请求。因此打开多个并发SSE流更有可能。然而,浏览器(以及web服务器)仍然可以通过TCP连接限制它们支持的并发HTTP/2流的数量。 HTTP/2甚至支持通过允许HTTP/2设置中的每个对等体传送它支持的最大数量的并发流(SETTINGS_MAX_CONCURRENT_STREAMS)。为了安全起见,您需要弄清楚目标浏览器和Web服务器支持的限制以及使用较少数量的SSE流。不幸的是,我不知道它是否属于任何HTML或浏览器规范的一部分,它们都应该至少支持通过HTTP/2发出的指定数量的并发请求。如果你保持低请求的数量,你可以避免遇到问题。

仅使用少数几个通道的另一个好处是,您仍然可以很好地支持HTTP/1.1客户端。不仅可能直接连接到您的服务器,也可能通过代理服务器连接(这意味着连接浏览器< - >代理使用HTTP/1.1和代理< - > web服务器使用HTTP/2)。

相关问题