Files
obsidian/Веб/Клиент-сервер/WebSocket.md
T
roma-dxunvrs 12a473f46e
deploy / Pull and Restart (push) Successful in 17s
web update
2026-10-04 19:57:51 +03:00

1.5 KiB

  • Протокол полнодуплескной(двунаправленной) связи поверх TCP-cоединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени
  • Позволяет серверу отправлять данные браузеру без дополнительного запроса со стороны клиента
  • Обмен данными ведется через отдельное TCP-соединение
  • Поддерживается всеми современными браузерами
  • Альтернатива - AJAX + Long Polling

Пример кода

var webSocket = new WebSocket("ws://localhost/echo");

webSocket.onopen = function(event) {
	webSocket.send("Hello");
}

webSocket.onmessage = function(event) {
	webSocket.close();
}

webSocket.onclose = function(event) {}

Как устанавливается

  1. Браузер отправляет обычный HTTP-запрос с заголовком Connection: Upgrade и Upgrade: websocket
  2. Сервер отвечает 101 (Switching Protocols)
  3. HTTP обрывается, появляется чистый TCP-коннект

Плюсы

  • Идеально для реалтайма
  • Нулевые расходы на трафик

Минусы

  • Сложнее администрировать