Рубрики
Uncategorized

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

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

Смотрите хорошую статью, специально перепечатанную, оригинальный адрес: длинное соединение, короткое соединение, длинный опрос, короткий опрос, веб-сайт

1, Короткое соединение и длинное соединение

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

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

HTTP1.1 указывает постоянное соединение HTTP по умолчанию (также переводится как постоянное соединение). Передача данных завершена, чтобы сохранить TCP-соединение открытым (без первых пакетов, без четырех волн), ожидая, пока одно и то же доменное имя продолжит использовать этот канал для передачи данных; напротив, это короткое соединение, если сервер не сообщит клиенту время ожидания, сервер может взять на себя инициативу четыре раза отключить TCP-соединение. Клиент может знать, что TCP – соединение недействительно. Кроме того, TCP также содержит пакеты пульса для определения того, работает ли текущее соединение. Существует множество способов избежать напрасной траты ресурсов.

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

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

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

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

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

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

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

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

3, Веб-карман

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

  • HTTP1.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” с волшебной строкой “258eafa5-e914-47da-95ca-c5ab0dc85b11”. Используйте шифрование SHA1, затем кодировку base64, результат в виде значения заголовка “sec websocket accept”, возвращаемого клиенту.

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

Оригинал: “https://developpaper.com/long-connection-short-connection-long-polling-short-polling-and-websocket/”