Автор оригинала: 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/”