Javascript HTML5 WebSocket:最大打开连接数?

Javascript HTML5 WebSocket:最大打开连接数?,javascript,html,web-applications,websocket,Javascript,Html,Web Applications,Websocket,HTML5 WebSocket是(和)一个热门话题,因为它们优雅地支持实时性 我目前有一个使用由Tomcat 7.0.30支持的WebSocket的工作应用程序,其中包括。但将其转移到生产环境会引起问题 我主要想知道每个浏览会话可以同时操作(打开)的最大连接数;浏览会话意味着一个浏览器选项卡或窗口 打开的websocket连接是否达到Web服务器可以同时处理的最大连接数?例如,在Apache中 相反,单个浏览会话的最大WebSocket数是否受浏览器本身的限制?如图所示,截至2012年4月,不同

HTML5 WebSocket是(和)一个热门话题,因为它们优雅地支持实时性

我目前有一个使用由Tomcat 7.0.30支持的WebSocket的工作应用程序,其中包括。但将其转移到生产环境会引起问题

我主要想知道每个浏览会话可以同时操作(打开)的最大连接数;浏览会话意味着一个浏览器选项卡或窗口

打开的websocket连接是否达到Web服务器可以同时处理的最大连接数?例如,在Apache中

相反,单个浏览会话的最大WebSocket数是否受浏览器本身的限制?如图所示,截至2012年4月,不同的浏览器支持不同数量的开放websocket连接。(我个人的目标是每个浏览会话打开一个websocket;但是这个信息还是很好知道的)

TL/DR:

  • 是什么限制了每个浏览会话可能的WebSocket数量?是客户吗?服务器?还是两者兼而有之
  • 相同的限制是否同时适用于
    ws:
    wss:
    连接

  • 在Gecko 7中,他们引入了参数
    network.websocket.max connections
    您可以在
    about:config
    中设置它。它根据以下内容“一次”设置最大websocket连接数:


    我不知道您是否可以从代码中确定这个数字,以及是否有任何方法可以确定在其他会话中打开了多少会话(因此还有多少会话是剩余的)。

    没有浏览器的最大连接默认值的标准规范。这取决于实现[0]。此外,对于同一个应用程序,在每个浏览会话中使用多个web套接字似乎有些过分,因为您可以使用发布/订阅频道

    连接的瓶颈通常在服务器端。Web套接字是对HTTP的升级,因此连接是“刚刚”升级的HTTP(TCP)连接[1]。HTTPS和WSS只向正常连接添加了一个安全层。它们不是不同的连接[2]。在您的情况下,请检查maxConnections(和maxThreads)[3]和您的操作系统最大值[4][5]。如果您的并发连接达到数万个,那么您应该开始考虑负载平衡或集群[6]

    [0]

    [1]

    [2]

    [3]

    [4]

    [5]

    [6]


    关于高并发性的更多信息:

    Hmm似乎没有一种跨浏览器的方式来设置这一点。仍然有用+1ed.在Chrome中找不到类似的选项,但这对Firefox很有帮助,谢谢!根据Mardie在第一个投票答案中的第一个引用,Chrome在运行时没有提供这样的设置,@Brade。你必须编译你自己的自定义Chromium来更改限制。我的问题是从用户的角度来看:当我有太多打开的选项卡加载了TFS web界面时,它们都开始表现出奇怪的行为。在FF的about:config中设置更大的
    network.http.max persistent connections per server
    有帮助。我强烈建议在每个浏览会话中保持一个连接-您最不希望的就是担心跨浏览器限制。服务器才是真正重要的地方。服务器和防火墙只能处理如此多的并发连接。我见过支持套接字的主机提供商根据并发连接的数量定价,如果这让你知道它的重要性以及你应该如何构建你的应用程序(例如,每个用户一个连接)。值得一读。从技术上讲,WebSocket不是HTTP的“升级”。它是一种不同的协议,也在TCP之上进行传输。它确实使用HTTP进行握手,并发送一个升级头字段来启动协议切换。@hacklikecrack,但是,如果您通过HTTP将其协商到HTTP服务器,它将继续作为HTTP请求通过所述HTTP服务器,尤其是作为HTTP头与
    Connection:upgrade
    协商。在这个问题上,我不得不站在@Mardie一边;)您所指的“酒吧/子频道”功能是什么?