WebSocket — это протокол, который держит постоянное соединение между клиентом и сервером и позволяет обмениваться данными в обе стороны в реальном времени. В отличие от обычного HTTP, где всегда действует схема «запрос — ответ», тут соединение остаётся открытым, и сервер может присылать новые данные без того, чтобы клиент запрашивал их повторно.
Протокол решает проблему, с которой раньше боролись через polling и long polling: постоянные опросы сервера создавали лишнюю нагрузку и задержки. WebSocket убирает эту избыточность за счёт одного постоянного канала связи.
Где встречается WebSocket
Чаты и поддержка, где сообщение должно прийти мгновенно, без перезагрузки страницы. Онлайн-игры, где важна почти нулевая задержка. Биржевые и финансовые сервисы с постоянно обновляющимися ценами. Уведомления и live-статусы в интерфейсе. Видеозвонки и системы аналитики, которые в фоне отправляют события на сервер.
Что проверяет тестировщик
Подключение — устанавливается ли соединение без ошибок и неожиданных разрывов. Сообщения — корректно ли сервер принимает и парсит данные, не падает ли на некорректном формате. Реакцию системы — дошло ли сообщение и правильно ли оно отобразилось у получателя. Обработку ошибок — как система реагирует на невалидный JSON, слишком большие сообщения или обрыв соединения. Подписки на события — работают ли подписка и отписка без утечек. Сессии и токены — что происходит при истечении токена: соединение должно закрываться корректно, а не пытаться бесконечно переподключиться. Безопасность — в продакшене должен использоваться защищённый wss, а не обычный ws.
Как увидеть WebSocket на практике
Проще всего открыть любой сайт с реалтайм-функцией, например онлайн-чат поддержки, и зайти в DevTools браузера на вкладку Network с фильтром WS. Там видно, как соединение сначала устанавливается как обычный HTTP-запрос, а затем «апгрейдится» до WebSocket — с заголовками Connection: Upgrade и Upgrade: websocket. Дальше можно наблюдать сам обмен сообщениями: что отправляет клиент и что присылает в ответ сервер.