到目前为止,我只使用HTTP/ 1.1,但最近我切换到HTTP/2。在1.1上,我遇到了请求数量限制的问题,但HTTP/2使用多路复用的一个连接,这是不是意味着我可以保持多个SSE通道畅通无阻,或者我应该仍然只使用一个内部消息路由解决方案?
发布于 2017-07-19 19:27:26
如果您想要安全:只使用一个通道,或者只使用几个通道,并在内部进行多路复用。
更长的答案:更多的通道导致HTTP/1.1问题的原因是,每个通道都需要一个专用的TCP连接,而浏览器限制了每个选项卡的并发TCP连接的数量(我想大概是10个左右)。使用HTTP/2在单个连接上进行并发HTTP请求是可能的。因此,打开多个并发SSE流更有可能。但是,浏览器(以及TCP服务器)可能仍然会限制它们在TCP连接上支持的并发HTTP/2流的数量。HTTP/2甚至通过允许HTTP/2设置中的每个对等体传递其支持的最大并发流数量(SETTINGS_MAX_CONCURRENT_STREAMS)来支持这一点。为了安全起见,您需要弄清楚目标浏览器和web服务器支持的限制是什么,并使用较少的SSE流。不幸的是,我不知道它是否是HTML或浏览器规范的一部分,它们都应该至少支持通过HTTP/2的明确指定的并发请求数量。如果您保持较低的请求数量,就会避免遇到问题。
只使用几个通道的另一个优点是,您仍然可以很好地支持HTTP/1.1客户端。不仅是那些可能直接连接到您的服务器的服务器,还有那些可能通过代理服务器连接的服务器(这意味着连接浏览器<->代理使用HTTP/1.1,代理<->webserver使用HTTP/2)。
https://stackoverflow.com/questions/45167720
复制相似问题