在HTTP2中使用服务器发送的事件时,是否仍存在实际的6连接限制?

在HTTP2中使用服务器发送的事件时,是否仍存在实际的6连接限制?,http,tcp,http2,server-sent-events,multiplexing,Http,Tcp,Http2,Server Sent Events,Multiplexing,我一直在谷歌搜索,似乎找不到这个问题的直接答案,有些人给出了矛盾的答案 大多数浏览器对每个域有6个连接限制。例如,如果您的网站是example.com,并且它在页面加载时初始化了一个持久服务器发送的事件连接,那么最终用户可以再打开该选项卡五次,但第六个选项卡根本不会加载,因为该域已达到6个持久TCP连接 现在,我看到一些人说这只是SSE的一个长期问题,唯一的替代方法是黑客解决方法,包括检测此连接限制,然后关闭隐藏选项卡中的连接,或者关闭这些选项卡中的连接并切换到长轮询 然而,一些人声称,HTTP

我一直在谷歌搜索,似乎找不到这个问题的直接答案,有些人给出了矛盾的答案

大多数浏览器对每个域有6个连接限制。例如,如果您的网站是example.com,并且它在页面加载时初始化了一个持久服务器发送的事件连接,那么最终用户可以再打开该选项卡五次,但第六个选项卡根本不会加载,因为该域已达到6个持久TCP连接

现在,我看到一些人说这只是SSE的一个长期问题,唯一的替代方法是黑客解决方法,包括检测此连接限制,然后关闭隐藏选项卡中的连接,或者关闭这些选项卡中的连接并切换到长轮询

然而,一些人声称,HTTP2通过多路复用解决了这一问题,这样,当所有选项卡多路复用到同一个TCP连接上时,您可以拥有任意多个打开的该网站选项卡。我找不到这一主张的主要来源,也找不到任何有重大权威的人提出这一主张


那么,这是真的吗?HTTP2多路复用是否解决了网站域的公共6连接限制问题?或者,如果一个用户希望支持站点的许多打开的选项卡,那么他们基本上需要使用WebSocket吗?

我已经在中实现了HTTP/2

如中所述,使用HTTP/2时,浏览器可以向服务器发出的最大并发请求数会大幅增加—不是无限的,而是从6-8个增加到大约100个

是的,多路复用在实践中解决了这个问题(除非您打开了100多个选项卡)

请注意,此值是由服务器配置的,因此服务器可能会向客户端发送一个配置,其中最大并发请求数设置为一个较小的数字,但实际上服务器已确定为100左右的数字


话虽如此,您还希望阅读有关SSE与WebSocket的讨论。

限制应用于浏览器(而非服务器端),并且

至少在http/1.1中是这样。我一直找不到任何特定于http/2的配置,因此我认为我们必须假设限制仍然存在。我认为它们是为了防止滥用或意外的DoS攻击而保存的

请参阅
network.http.max每台服务器的持久连接数
。(您也可以在about:config中看到它。)

以下是我在Firefox中看到的过滤“连接”的所有设置:

我想知道SSE是由
http.max connections
还是
websocket.max connections
管理的?(暂时忽略每个域的任何限制。)


当然,您也可以尝试一下(在我上面的链接问题中有一些示例脚本)。但是,除非您控制所有客户端的配置,否则您必须假设某些人的运行限制为6。

据称浏览器在客户端施加的限制与您在自己的代码中使用WebSocket甚至HTTP连接所能做的没有任何关系。然而,我经常有六个以上的标签打开相当多的网站,从来没有遇到过你描述的行为。自1991年以来。