Рубрики
Uncategorized

Длительное соединение, короткое соединение, длительный опрос, короткий опрос, объяснение веб-сайта

Автор оригинала: David Wong.

Посмотрите хорошую статью, специально перепечатайте ее, исходный адрес: длительное соединение, короткое соединение, длительный опрос, короткий опрос, websocket

I. короткое соединение и длительное соединение

Короткое соединение : каждый HTTP-запрос устанавливает TCP-соединение, которым легко управлять.

Длительное соединение : необходимо установить только одно TCP-соединение, а более поздние HTTP-запросы повторно используют одно и то же TCP-соединение, которым трудно управлять

HTTP 1.1 указывает, что по умолчанию используется длительное соединение (постоянное соединение HTTP, также переводимое как постоянное соединение). После завершения передачи данных TCP-соединение остается открытым (без ПЕРВОГО пакета, без четырех волн), ожидая продолжения передачи данных по этому каналу под тем же доменным именем. Напротив, короткое соединение, если сервер не сообщает клиенту время ожидания, не имеет значения. Сервер может инициировать четыре волны для отключения TCP-соединения, и клиент может знать, что TCP-соединение недействительно. Кроме того, протокол TCP содержит пакеты пульса для определения того, работает ли текущее соединение. Существует множество способов избежать напрасной траты ресурсов.

В сценарии приложения с длительным подключением клиентская сторона, как правило, активно не закрывает соединение между ними. Если соединение между клиентом и сервером не будет постоянно закрыто, возникнет проблема. С увеличением числа клиентских подключений сервер рано или поздно не сможет их выполнять. В это время стороне сервера необходимо принять некоторые стратегии, такие как закрытие некоторых долгосрочных подключений без событий чтения-записи. Таким образом, можно избежать некоторых вредоносных подключений, которые могут повредить службы на стороне сервера; если позволяют условия, клиентскую машину можно использовать в качестве детализации, чтобы ограничить максимальное количество длительных подключений каждого клиента, чтобы можно было полностью избежать вовлечения определенного клиента с болью в яйце во внутренние службы.

Создание длинного и короткого соединения зависит от стратегии завершения работы, принятой клиентом и сервером. В конкретных сценариях применения применяются конкретные стратегии. Идеального выбора не существует, есть только подходящий выбор

Разница в сценарии применения:

Как правило, длительное соединение используется для нескольких частых соединений между клиентской и серверной частями. Например, для подключения к базе данных используется длительное соединение. Если для частой связи используется короткое соединение, будет вызвана ошибка сокета, а частое создание сокета-пустая трата ресурсов. В то время как службы HTTP, такие как веб-сайты, обычно используют короткие ссылки (в сценариях восстановления ресурсов), поскольку длинные соединения потребляют определенное количество ресурсов для сервера, в то время как короткие соединения для десятков тысяч или даже сотен миллионов клиентов, таких как веб-сайты, сэкономят некоторые ресурсы.

Короткий опрос и длительный опрос

Это существенно отличается от короткого соединения и длительного соединения. Длинное и короткое соединение-это механизм, с помощью которого клиент устанавливает и поддерживает TCP-соединение с сервером. Длинный и короткий опрос относится к способу, которым клиент запрашивает сервер, а сервер отвечает

Короткий опрос : многократная отправка HTTP-запроса, запрос о завершении целевого события, преимущества: простота записи, недостатки: потеря пропускной способности и ресурсов сервера

Длительный опрос : удерживайте HTTP-запрос на сервере (в виде цикла или сна и т. Д.), Подождите, пока не наступит целевое время (держите запрос в ожидании поступления данных или соответствующего тайм-аута), И верните HTTP-ответ. Преимущества: менее частые запросы без сообщений, недостатки: сложное написание

Websocket

Разница между websocket и длинным соединением HTTP

  • HTTP 1.1 использует соединение: поддерживайте длительное соединение, а HTTP 1.1 по умолчанию использует постоянное соединение. Несколько HTTP-запросов могут быть выполнены в одном TCP-соединении, но каждый запрос все равно должен отправлять заголовок отдельно. Сохранение в живых не будет поддерживать связь постоянно. Он имеет время хранения, которое может быть установлено в другом серверном программном обеспечении (например, APACHE).
  • Длительное соединение websocket-это Истинный полный дуплекс После установления первого TCP-соединения последующие данные могут быть отправлены обеими сторонами без отправки заголовка запроса, и соединение будет продолжаться до тех пор, пока один из клиентов или серверов активно не закроет соединение, В отличие от длинного соединения HTTP, websocket может более гибко контролировать время, когда соединение закрыто, вместо того, чтобы поддерживать протокол HTTP, сервер немедленно закроется (что очень бесчеловечно)

Установление соединения с Websocket

При установлении соединения с websocket вам необходимо отправить запрос на рукопожатие через клиент или браузер. Пример сообщения с запросом показан на рисунке:

Ответное сообщение, возвращаемое сервером клиенту, показано на рисунке ниже:

Чтобы установить соединение с websocket, клиентскому браузеру сначала необходимо отправить HTTP-запрос на сервер, который отличается от обычного HTTP-запроса и содержит некоторую дополнительную информацию заголовка. Дополнительная информация заголовка “обновление: websocket” указывает, что это HTTP-запрос на обновление протокола. Серверная сторона анализирует эти дополнительные сведения заголовка, а затем генерирует информацию об ответе для возврата на клиентскую сторону. Установлено соединение websocket между клиентской и серверной сторонами. Обе стороны могут свободно передавать информацию по этому каналу связи, и соединение будет продолжаться до тех пор, пока клиентская сторона или сторона сервера активно не закроет соединение.

“Ключ sec websocket” в сообщении запроса является случайным. Сервер будет использовать эти данные для построения сводной информации SHA-1. Добавьте “ключ sec websocket” к волшебной строке “258eafa5-e914 – 47da-95ca-c5ab0dc85b11”. Используйте шифрование SHA1, затем кодировку base64 и верните результат клиенту в качестве значения заголовка “sec websocket accept”.

Примечание: Эта статья является перепечаткой. Исходный адрес: длительное соединение, короткое соединение, длительный опрос, короткий опрос, websocket