Firefox 是否有它可以支持的最大事件源数量?
Does Firefox has a maximum number of EventSource it can support?
我目前正在使用 class com.sun.net.httpserver.HttpServer 开发一个简单的网络仪表板。在此仪表板中,我可以在监控页面中创建一定数量的 EventSource。
通过使用它,我注意到仅在 6 个并行 EventSource 之后,我的浏览器就停止了 "subscribing"。为了证明这一点,我开发了一个简单的玩具示例。您可以在以下 github 存储库中找到它:https://github.com/wellsaid/SimpleSSEHTTPServer
正如您在此 screenshot 中所见,最后两个资源仍在等待,而前六个资源开始接收更新。
我程序的输出是:
[Main] Creating the server object ...
[Main] Creating server context ...
[Main] Creating SSE contexts ...
[Main] Starting accepting requests!
[HttpRequestHandler] Received request from /0:0:0:0:0:0:0:1:47358: OK!
[Counter-Thread-5] Started
[Counter-Thread-1] Started
[Counter-Thread-3] Started
[Counter-Thread-2] Started
[Counter-Thread-4] Started
[Counter-Thread-6] Started
这表明浏览器永远不会执行对资源 'counter7' 和 'counter8' 的请求。
最后,当我在 firefox 调试器上停止服务器时,我可以看到 this
这是否意味着浏览器(或服务器)可以从一个客户端处理某种最大数量的 EventSource?在这种情况下,我该如何增加它们?
更新:
我认为这是浏览器如何管理并发性的问题,因为如果我对资源 'counter7' 和 'counter8' 执行 curl 请求,服务器会正确响应:screenshot
据此:
客户端、服务器对之间的 HTTP 连接存在最大限制,具体取决于浏览器。
鉴于我的应用程序的性质,我切换到不同的模型:为每个客户端使用单个 EventSource。然后我按以下格式发送数据:
数据:键:value\n\n
我目前正在使用 class com.sun.net.httpserver.HttpServer 开发一个简单的网络仪表板。在此仪表板中,我可以在监控页面中创建一定数量的 EventSource。
通过使用它,我注意到仅在 6 个并行 EventSource 之后,我的浏览器就停止了 "subscribing"。为了证明这一点,我开发了一个简单的玩具示例。您可以在以下 github 存储库中找到它:https://github.com/wellsaid/SimpleSSEHTTPServer
正如您在此 screenshot 中所见,最后两个资源仍在等待,而前六个资源开始接收更新。
我程序的输出是:
[Main] Creating the server object ...
[Main] Creating server context ...
[Main] Creating SSE contexts ...
[Main] Starting accepting requests!
[HttpRequestHandler] Received request from /0:0:0:0:0:0:0:1:47358: OK!
[Counter-Thread-5] Started
[Counter-Thread-1] Started
[Counter-Thread-3] Started
[Counter-Thread-2] Started
[Counter-Thread-4] Started
[Counter-Thread-6] Started
这表明浏览器永远不会执行对资源 'counter7' 和 'counter8' 的请求。
最后,当我在 firefox 调试器上停止服务器时,我可以看到 this
这是否意味着浏览器(或服务器)可以从一个客户端处理某种最大数量的 EventSource?在这种情况下,我该如何增加它们?
更新: 我认为这是浏览器如何管理并发性的问题,因为如果我对资源 'counter7' 和 'counter8' 执行 curl 请求,服务器会正确响应:screenshot
据此:
客户端、服务器对之间的 HTTP 连接存在最大限制,具体取决于浏览器。
鉴于我的应用程序的性质,我切换到不同的模型:为每个客户端使用单个 EventSource。然后我按以下格式发送数据:
数据:键:value\n\n