Опоздал на вечеринку, но это касается вопроса, с которым я сейчас сталкиваюсь ...
У меня есть веб-сервер, работающий на платформе с ограниченными ресурсами (128 КБ флэш-памяти, 48 КБ ОЗУ), поэтому он может обрабатывать только одно соединение за раз. Дальнейшие соединения не обрабатываются, пока текущее соединение не будет закрыто. Кроме того, он не вызывает Connection: close
для определенных URL-адресов из-за требования низкой задержки. Как правило, с устройством одновременно разговаривает только одна вещь.
Соединения AJAX следуют тем правилам, которые браузер устанавливает для других соединений. В моем случае я тестирую веб-страницу, которая использует AJAX для чтения одного из разрешенных для поддержания активности URL-адресов один раз в секунду, а браузер не закрывает соединение в течение нескольких секунд после Окно закрыто. В результате другие клиенты ждут бесконечно.
Так что не предполагайте, что XHR-соединения закрыты после завершения. Они могут не быть; Firefox 21 точно не закрывает их.
Моя текущая проблема заключается в том, что я хочу, чтобы мои AJAX-запросы закрывали сокет по завершении, и я использую хук предварительной обработки .ajaxSend()
jQuery для установки заголовка Connection: close
. Кажется, что AJAX работает, но когда другой клиент пытается подключиться, он получает «сброс подключения по пиру», поэтому мне интересно, не обнаружит ли Firefox заголовок «Connection: close» в запросе XHR и сохраняет его конец открытого сокета (до истечения примерно трех секунд) даже после того, как сервер закрыл свою сторону.