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

28 lines
1.5 KiB
Markdown

- Протокол полнодуплескной(двунаправленной) связи поверх TCP-cоединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени
- Позволяет серверу отправлять данные браузеру без дополнительного запроса со стороны клиента
- Обмен данными ведется через отдельное TCP-соединение
- Поддерживается всеми современными браузерами
- Альтернатива - [[AJAX]] + [Long Polling](Polling.md)
## Пример кода
```JavaScript
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](../Сеть%20и%20API/HTTP.md)-запрос с заголовком `Connection: Upgrade` и `Upgrade: websocket`
2. Сервер отвечает `101` (Switching Protocols)
3. HTTP обрывается, появляется чистый TCP-коннект
## Плюсы
- Идеально для реалтайма
- Нулевые расходы на трафик
## Минусы
- Сложнее администрировать