WebSocket — это протокол двусторонней связи для постоянного обмена сообщениями клиента и сервера. Как и HTTP, WebSocket работает поверх TCP. Но вместо периодического соединения формата «запрос – ответ», держит постоянное соединение с сервером
Это постоянное соединение между клиентом и сервером, где оба могут отправлять и получать данные в любое время без «новых» HTTP-запросов.
📡 Один handshake, и связь остаётся открытой.
💬 Всё, что приходит на сервер, можно сразу передать другим клиентам (например, чаты, уведомления, трекеры).
Типичные примеры:
• Онлайн-чат и сообщения в реальном времени.
• Биржи: обновление ордеров без обновления страницы.
• Панели мониторинга (логирование, метрики, статусы).
Как работает WebSocket Handshake
Клиент сначала делает обычный HTTP-запрос:
GET /chat HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: xxxxxxx
Сервер отвечает:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Статус 101 означает, что соединение «переключилось» с HTTP на WebSocket.
С этого момента клиент и сервер общаются напрямую без повторных запросов.
Что важно знать QA
• Проверяй, что 101 реально возвращается при успешном handshake.
• После установки соединения проверь, что сообщения проходят двусторонне.
• На клиент → сервер сообщения должны быть замаскированы (это защита от атак).
• Ping/Pong — служат для проверки связи (heartbeat).
• Корректное закрытие соединения возвращает код 1000 (normal closure).
Как тестировать
• Через Postman (WebSocket tab) или DevTools → вкладка WS → Frames.
• Убедись, что сервер не ломается при больших payload’ах и внезапном закрытии.
• Проверяй reconnection, ошибки при отсутствии Auth или неверных данных.
Opcode в WebSocket‑фрейме — это 4 бита в заголовке кадра, которые указывают, какого типа данные внутри этого фрейма и как их интерпретировать.
Проще говоря, по opcode клиент и сервер понимают, что за сообщение пришло: текст, бинарные данные, закрытие соединения или служебный ping/pong.
Хочешь научиться тестировать gRPC и GraphQL на практике до уверенности на собеседовании?
Скидка 1000р до 28 февраля
gRPC
https://stepik.org/a/254052/pay?promo=546c3abf8c76a57e
graphQL
https://stepik.org/a/252924/pay?promo=5ff38847e300e0c9
Планирую провести вебинар и про WebSocket 🙃






