Я не буду переписывать ответ CodeCaster, потому что он очень хорошо сформулирован.
В ответ на ваше редактирование - нет. Это не. Одно постоянное соединение HTTP может использоваться только для одного запроса одновременно, иначе это может привести к путанице. Поскольку HTTP не определяет какую-либо форму механизма отслеживания запросов / ответов, это просто невозможно.
Следует отметить, что существуют другие протоколы, в которых используется аналогичный формат сообщения (соответствует RFC822 ), которые допускают это (используя такие механизмы, как заголовок cSeq SIP ) и было бы возможно реализовать это в пользовательском приложении HTTP, но HTTP не определяет никакого стандартного механизма для этого, и поэтому ничего нельзя сделать, что можно было бы предположить, чтобы работать везде. Это также может вызвать проблемы с ответом на второе сообщение: дождитесь завершения первого ответа перед отправкой второго ответа или попытаетесь приостановить первый ответ, пока отправляете второй ответ? Как вы будете сообщать об этом таким образом, чтобы гарантировать, что сообщения не будут повреждены?
Также обратите внимание, что SIP (обычно) работает по протоколу UDP, что не гарантирует упорядочение пакетов, что делает систему cSeq более необходимой.
Если вы хотите отправить запрос на сервер во время выполнения другой транзакции, вам потребуется создать новое соединение с сервером и, следовательно, новый поток TCP.
Facebook провел некоторое исследование этого вопроса, когда создавал свои CDN, и пришел к выводу, что вы можете эффективно иметь 2 или 3 открытых потока HTTP одновременно, но более того, это сокращает общее время передачи из-за дополнительных издержек пакета Стоимость. Я бы дал ссылку на запись в блоге, если бы смог найти ссылку ...