Я думаю, что Connection: close - это совершенно неверное сообщение. Когда браузер создает несколько соединений, он точно не передает свои запросы - так что ISTM, что вы хотите браузер для конвейеризации, вместо создания параллельных соединений.
Так что одним из шагов к этому было бы использование HTTP 1.1 и сохранение соединения открытым. Затем браузер повторно использует TCP-соединение для дальнейших запросов. Это должно позволить микроконтроллеру наверстать упущенное.
Теперь браузер может попытаться создать дополнительные параллельные соединения. Лучшая реакция на это - не принимать ни одну из этих связей. Поэтому ограничьте количество параллельных подключений, которые вы обслуживаете (независимо от клиента), и читайте новые запросы только тогда, когда вы закончили читать предыдущие. При этом предпочитайте читать установленные соединения, а не принимать новые.
Если у вас есть доступ к стеку TCP контроллера, вы можете определить, с какого хоста происходит соединение, поэтому вы можете принимать соединения от других браузеров, ограничивая при этом количество соединений из того же браузера (что вы не может сделать в обычном сокете API).