Я пишу программу, которая будет делать 1 GET запрос на сервер. Я использую сокет (QTcpSocket), и я хочу знать, должен ли я включить «Connection: Close» в свой запрос, а затем воссоздать сокет для каждого запроса или лучше просто сохранить его в розетке, потому что я повторяю один и тот же запрос раз в секунду.Лучше держать сокет открытым для частых запросов или закрывать сокет каждый раз
ответ
Установление TCP-соединения занимает более одного раунда. Если ваше соединение является SSL-соединением, есть еще несколько раундов. Если вы планируете общаться с одним и тем же пунктом назначения несколько раз, возможно, он рассчитывает установить соединение и использовать его, пока он все еще работает. Вероятно, вы должны сделать свой код таким, чтобы отправка запроса не зависела от подключаемого в настоящее время соединения и при необходимости [восстановить] соединение.
Eeww .. SSL latency :( –
Для открытия сокета требуется 3 обмена пакетами, и для его закрытия требуется 4. Вы должны стремиться к тому, чтобы открывать соединения, а не накладывать эти накладные расходы на каждую транзакцию.
@ChristianSchack Ваши комментарии смешны. Это не чья-то вина, а ваша, что вы не правильно прочитали вопрос. Это все: «1 GET-запрос в секунду» и «Соединение: закрыть», которое это HTTP-заголовок. Его вопрос заключается в том, должен ли он поддерживать свою связь открытым, а не дизайном приложения, синхронизацией, асинксом, ... всей другой бессмыслицей, о которой вы говорили. Никто не несет ответственности за то, чтобы повторить то, о чем уже говорит этот вопрос , – EJP
Я бы сказал, держите его открытым. Но лучший способ узнать это - сравнить его, чтобы узнать, какая разница в вашем приложении. – towr
В случае связи с высокой задержкой (например, спутником) вы обнаружите, что 1 запрос/сек невозможен при непрерывном подключении/отключении. –