В HTTP / 1.1 (постоянные соединения), что такое «сигнал», который побуждает клиента отправить следующий HTTP-запрос?Есть ли что-то еще, кроме Content-Length?
Я пытаюсь создать простой шлюз, который бы соединял трафик TCP между файлами.У меня есть два приложения:
- «сервер» открывает сокет и ждет подключения.Когда соединение установлено, оно пересылает все, что получает, из выходного файла, в то же время пересылает все из входного файла обратно в сокет
- «клиент» ожидает содержимое в указанном выше выходном файле и устанавливает соединение ссервер отправляет на него данные и записывает полученные данные обратно в указанный выше входной файл.
Другими словами: все, что я получаю через сокет, перенаправляется через файлы в другой сокет, и наоборот.
AFAIK это должно быть полностью прозрачно, но постоянные соединения не работают должным образом.
Я тестирую с Firefox - происходит то, что FF отправляет два GET и получает два ответа.Но затем он просто сидит и ждет, как будто он еще не получил все данные ... Через 5 секунд (сервер отвечает «Keep-Alive: timeout = 5», так что это подходит), одна из сторон закрывает соединение ивосстанавливает его и отправка продолжается для нескольких файлов, когда он снова застревает.
Я слушал с WireShark, но не смог найти ничего необычного.Есть идеи, что происходит?
ОБНОВЛЕНИЕ : ниже приведен скриншот журнала WireShark.Это показывает, что HTTP-соединение отправляется слишком поздно, после того, как TCP-соединения закрываются (обратите внимание на время).Судя по моим логам, он был отправлен сразу.Есть идеи, почему это несоответствие?Стоит ли как-то «промывать» розетку?Я использую Python.