В настоящее время я разрабатываю простую веб-панель управления с использованием класса com.sun.net.httpserver.HttpServer.В этой панели я могу создать определенное количество EventSource на странице мониторинга.
Используя это, я заметил, что после всего лишь 6 параллельных EventSource мой браузер перестает «подписываться» на них.Чтобы доказать это, я разработал простой игрушечный пример.Вы можете найти его в следующем репозитории github: https://github.com/wellsaid/SimpleSSEHTTPServer
Как вы можете видеть на этом снимке экрана , последние два ресурса остаются в ожидании, а первые шесть начинают получать обновления.
Вывод моей программы:
[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, который браузер (или сервер) может обработать от одного клиента?В каком случае, как их увеличить?
ОБНОВЛЕНИЕ: Я думаю, что это проблема того, как браузер управляет параллелизмом, так как, если я выполняю запрос с curl на ресурсах counter7 и counter8,сервер отвечает правильно: скриншот