Из истории про собеседование, пару раз спрашивали как устроен WebSocket
WebSocket это протокол двустороннего соединения между клиентом и сервером. В отличие от традиционного HTTP, где запросы инициируются клиентом, WebSocket позволяет обеим сторонам отправлять данные друг другу в любой момент.
💬 Этапы работы WebSocket
1️⃣ Установление соединения (Handshake).
Соединение начинается с обычного HTTP-запроса. Клиент отправляет запрос на сервер с просьбой перейти на протокол WebSocket. Запрос содержит специальные заголовки, включая Upgrade и Connection, которые указывают, что клиент хочет использовать WebSocket.
Пример HTTP-запроса от клиента:
GET /socket HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Если сервер поддерживает WebSocket, он ответит (101 Switching Protocols) и подтверждает переход на WebSocket-протокол.
Пример ответа сервера:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
2️⃣ После успешного хендшейка соединение переключается с HTTP на WebSocket и соединение становится постоянным.
3️⃣ Клиент и сервер могут отправлять сообщения друг другу в обоих направлениях без необходимости повторного запроса или ожидания ответа.
🤔Для чего использовать?
Низкая задержка, что позволяет не устанавливать соединение для каждого сообщения.
Сообщения отправляются без дополнительного HTTP-заголовка, что делает их лёгкими.
Мгновенная передача данных.
В основном используется для онлайн-игр, финансовых бирж, систем отслеживания.
😉Как тестировать?
1️⃣ В постмане или insomnia есть поддержка websockek.
2️⃣ Мне нравится делать в devtools об это я рассказывал тут.
3️⃣ А посмотреть какие запросы отправляет приложение можно в network в фильтре ws⬇️