Gymterview
junior

Что такое WebSocket?

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

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

В отличие от HTTP, где клиент всегда инициирует запрос (request-response модель), WebSocket позволяет серверу отправлять данные клиенту по своей инициативе (push). Соединение устанавливается один раз через HTTP-рукопожатие (upgrade), после чего переключается на протокол WebSocket и остаётся открытым.

URI-схемы WebSocket

Схема Описание
ws:// Нешифрованное соединение (аналог HTTP)
wss:// Шифрованное соединение (аналог HTTPS)

Когда использовать WebSocket

  • Чаты и мессенджеры
  • Уведомления в реальном времени
  • Онлайн-игры
  • Биржевые котировки и дашборды с живыми данными
  • Совместное редактирование документов

В Java-мире WebSocket поддерживается через javax.websocket (Jakarta WebSocket API) и Spring WebSocket / Spring WebFlux. Spring также предоставляет STOMP-поддержку поверх WebSocket для сообщений с маршрутизацией.

На собеседовании: ключевое отличие от HTTP — двусторонняя связь и постоянное соединение. Часто спрашивают: «Зачем WebSocket, если есть AJAX?» — AJAX работает по модели запрос-ответ, а WebSocket позволяет серверу пушить данные без запроса клиента.