Рубрики

Что такое веб-сокет и чем он отличается от HTTP?

HTTP и WebSocket — это протоколы связи, используемые в коммуникации клиент-сервер.

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

HTTP может работать поверх любого надежного протокола с установлением соединения, такого как TCP, SCTP. Когда клиент отправляет HTTP-запрос на сервер, между клиентом и сервером открывается TCP-соединение, и после получения ответа TCP-соединение прерывается, каждый HTTP-запрос открывает отдельное TCP-соединение с сервером, например, если клиент отправляет 10 запросов На сервере будет открыто 10 отдельных HTTP-соединений. и закройте после получения ответа / отступления.

Информация сообщения HTTP, закодированная в ASCII, каждое сообщение запроса HTTP состоит из версии протокола HTTP (HTTP / 1.1, HTTP / 2), методов HTTP (GET / POST и т. Д.), Заголовков HTTP (тип содержимого, длина содержимого), информации о хосте и т. Д. и тело, которое содержит фактическое сообщение, которое передается на сервер. Заголовки HTTP варьируются от 200 байтов до 2 КБ, общий размер заголовка HTTP составляет 700-800 байтов. Когда веб-приложение использует больше файлов cookie и других инструментов на стороне клиента, которые расходуют средства хранения агента, оно уменьшает полезную нагрузку HTTP-заголовка.

WebSocket: WebSocket является двунаправленным, полнодуплексным протоколом, который используется в том же сценарии взаимодействия клиент-сервер, в отличие от HTTP, он начинается с ws: // или wss: // . Это протокол с отслеживанием состояния, который означает, что соединение между клиентом и сервером будет поддерживаться до тех пор, пока оно не будет прервано какой-либо стороной (клиентом или сервером). после закрытия соединения одним из клиентов и сервера соединение прекращается с обоих концов.

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

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

Когда можно использовать веб-сокет:

  • Веб-приложение в режиме реального времени. Веб-приложение в режиме реального времени использует веб-сокет для отображения данных на стороне клиента, которые непрерывно отправляются внутренним сервером. В WebSocket данные непрерывно проталкиваются / передаются в одно и то же соединение, которое уже открыто, поэтому веб-сокет быстрее и повышает производительность приложения.

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

  • Игровое приложение. В игровом приложении вы можете сосредоточиться на том, что данные постоянно поступают на сервер и без обновления пользовательского интерфейса будут действовать на экране; пользовательский интерфейс автоматически обновляется, даже не устанавливая новое соединение, поэтому оно очень полезно в игровом приложении.
  • Приложение чата. Приложение чата использует WebSocket для установления соединения только один раз для обмена, публикации и трансляции сообщения среди подписчика. он использует одно и то же соединение WebSocket для отправки и получения сообщения и передачи сообщения один на один.

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

Примечание: веб-сервисов RESTful достаточно для получения данных с сервера, если мы загружаем данные только один раз.

Различия между HTTP и WebSocket Connection:

WebSocket ConnectionHTTP Connection
WebSocket is a bidirectional communication protocol that can send the data from the client to the server or from the server to the client by reusing the established connection channel. The connection is kept alive until terminated by either the client or the server.The HTTP protocol is unidirectional protocol works on the top of TCP protocol which is a connection-oriented transport layer protocol, we can create the connection by using HTTP request methods after getting the response HTTP connection get closed.
Almost all the real-time application like (trading, monitoring, notification) services uses WebSocket to receiving the data on a single communication channel.Simple RESTful application uses HTTP protocol which is stateless.
All the frequently updated applications used WebSocket because it is faster than HTTP Connection.When we do not want to retain a connection for a particular amount of time or reusing the single connection for transmitting the data, HTTP connection is slower than the WebSocket..

Примечание: в зависимости от вашего проекта вы должны выбрать, где это будет WebSocket или HTTP Connection.

Рекомендуемые посты:

Что такое веб-сокет и чем он отличается от HTTP?

0.00 (0%) 0 votes