JavaScript WebSocket API (WebSockets)

Описание API

WebSocket API - это продвинутая технология, позволяющая страницам использовать протокол WebSocket для открытия сеанса двусторонней интерактивной связи между браузером пользователя и сервером (удаленным узлом). С помощью этого API можно отправлять сообщения на сервер и получать управляемые событиями ответы, не опрашивая при этом сервер для получения ответа.

Протокол WebSocket это независимый протокол, основанный на протоколе TCP (англ. Transmission Control Protocol - протокол управления передачей), он делает возможным более тесное взаимодействие между браузером и веб-сайтом, способствуя распространению интерактивного содержимого и созданию приложений реального времени.

Протокол WebSocket определяет две URI (англ. Uniform Resource Identifier - унифицированный (единообразный) идентификатор ресурса) схемы:

  • ws: (нешифрованное соединение)
  • wss: (шифрованное соединение)

Интерфейсы WebSocket API

Интерфейс / объект — WebSocket API
Интерфейс / объект Описание
CloseEvent Событие, отправляемое объектом WebSocket при закрытии соединения.
MessageEvent Событие, отправляемое объектом WebSocket при получении сообщения с сервера.
WebSocket Является основным интерфейсом для осуществления подключения к серверу WebSocket и последующей отправки и получения данных о подключении.

Поддержка браузерами

Спецификация: websockets.spec.whatwg

Поддерживается во всех основных браузерах с 2015 года.

Отдельные значения (1) поддерживаются не везде — смотрите таблицу.

Показать браузеры
Совместимостьapi.WebSocket
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
WebSocket✓5✓12✓11✓12.1✓5✓18✓14✓12.1✓4.2✓1.0✓4.4✓4.2
new WebSocket()✓5✓12✓11✓12.1✓5✓18✓14✓12.1✓4.2✓1.0✓4.4✓4.2
url parameter allows https, http, and relative URLs✓125✓125✓124✓111✓17.3✓125✓124✓83✓17.3✓27.0✓125✓17.3
binaryType✓15✓12✓11✓12.1✓6✓18✓14✓12.1✓6✓1.0✓4.4✓6
bufferedAmount✓5✓12✓7✓12.1✓5✓18✓7✓12.1✓4.2✓1.0✓4.4✓4.2
close✓5✓12✓7✓12.1✓5✓18✓7✓12.1✓4.2✓1.0✓4.4✓4.2
close event✓5✓12✓7✓12.1✓5✓18✓7✓12.1✓4.2✓1.0✓4.4✓4.2
error event✓5✓12✓7✓12.1✓5✓18✓7✓12.1✓4.2✓1.0✓4.4✓4.2
extensions✓16✓12✓8✓12.1✓6✓18✓8✓12.1✓6✓1.0✓4.4✓6
Subject to Local Network Access restrictions✓147✓147×✓131×✓147×✓98××××
message event✓5✓12✓7✓12.1✓5✓18✓7✓12.1✓4.2✓1.0✓4.4✓4.2
open event✓5✓12✓7✓12.1✓5✓18✓7✓12.1✓4.2✓1.0✓4.4✓4.2
protocol✓15✓12✓7✓12.1✓6✓18✓7✓12.1✓6✓1.0✓4.4✓6
Supports protocol as specified by RFC 6455✓16✓12✓11✓15✓6✓18✓14✓14✓6✓1.0✓4.4✓6
readyState✓5✓12✓7✓12.1✓5✓18✓7✓12.1✓4.2✓1.0✓4.4✓4.2
send✓5✓12✓18✓12.1✓5✓18✓18✓12.1✓4.2✓1.0✓4.4✓4.2
url✓18✓12✓7✓12.1✓6✓18✓7✓12.1✓6✓1.0✓4.4✓6
Available in workers✓5✓12✓37✓12.1✓5✓18✓37✓12.1✓5✓1.0✓4.4✓5

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

Классический WebSocket не управляет обратным давлением автоматически: при больших потоках данных контролируйте очередь через bufferedAmount. WebSocketStream — отдельное экспериментальное API потоков с ограниченной поддержкой, а не метод WebSocket.

Спецификация

WebSockets Standard.