SSE(EventSource): why no more than 6 connections?

后端 未结 3 1327
南方客
南方客 2020-12-05 19:50

I wanted to see how many simultaneous SSE (aka EventSource) connections I could setup, before overloading my machine. But testing with Firefox (Firefox 18 or Firefox 20) it

相关标签:
3条回答
  • 2020-12-05 20:28

    Referring this https://developer.mozilla.org/en-US/docs/Web/API/EventSource

    It is stated that Firefox and Chrome set the limit on the number of connections opened by a browser + domain.

    When not used over HTTP/2, SSE suffers from a limitation to the maximum number of open connections, which can be specially painful when opening various tabs as the limit is per browser and set to a very low number (6). The issue has been marked as "Won't fix" in Chrome and Firefox. This limit is per browser + domain, so that means that you can open 6 SSE connections across all of the tabs to www.example1.com and another 6 SSE connections to www.example2.com. (from Stackoverflow). When using HTTP/2, the maximum number of simultaneous HTTP streams is negotiated between the server and the client (defaults to 100).

    0 讨论(0)
  • 2020-12-05 20:36

    See the Connections per Hostname column here: http://www.browserscope.org/?category=network&v=1

    More information than anyone could possibly want, and it shows the observed "6" is basically just convention.

    RFC2616 suggests a limit of 2, but everyone ignores it. So http://trac.tools.ietf.org/wg/httpbis/trac/ticket/131 removes that suggestion.

    Customization

    It appears IE can be configured from the registry.

    Firefox can be configured from within about:config, filter on network.http for various settings; network.http.max-persistent-connections-per-server is the one to change.

    Chrome cannot be configured at the current time.

    Opera can be configured by going to about:config, then opening "Performance" and changing "Max Persistent Connections Server".

    Safari? No, not configurable, apparently.

    0 讨论(0)
  • 2020-12-05 20:50

    The reason could be every EventSource object initiates the new HTTP session and in fact opens new tcp/ip socket. Because of you're pushing data from server continuously in infinite loop, the socket keeps open continuously. All web browsers has an upper limit on simultaneous active connections to the same server. normally in range of 4 to 6 as per RFC 2616. Your browser just preventing new connection to be open as this limit to be exceeded.

    You may learn here some more info as well:
    http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/

    0 讨论(0)
提交回复
热议问题