--- title: WebSocket slug: Web/API/WebSocket tags: - API - WebSocket - WebSockets translation_of: Web/API/WebSocket ---
Объект WebSocket предоставляет API для создания и управления веб-сокет-подключения к серверу, а также для отправки и получения данных в этом подключении.
Конструктор WebSocket принимает один обязательный и один опциональный параметр:
WebSocket WebSocket( in DOMString url, in optional DOMString protocols ); WebSocket WebSocket( in DOMString url, in optional DOMString[] protocols );
url
protocols
{{ optional_inline() }}Конструктор может выбросить исключение:
SECURITY_ERR
void close(in optional unsigned long code, in optional DOMString reason); |
void send(in DOMString data); |
Атрибут | Тип | Описание |
binaryType |
{{ DOMXref("DOMString") }} | Строка, указывающая на тип двоичных данных, которые будут переданы по соединению. Это может быть "blob" если будут использованы {{ domxref("Blob") }} объекты или "arraybuffer" если будут использованы объекты ArrayBuffer |
bufferedAmount |
unsigned long |
Количество байтов данных, которые были поставлены в очередь, используя вызовы {{ manch("send") }}, но еще не переданные в сеть. Это значение не сбрасывается в ноль, при закрытии соединения; если продолжить вызывать {{ manch("send") }}, значение будет расти. Только чтение. |
extensions |
{{ DOMXref("DOMString") }} | Расширения, выбранные сервером. В настоящее время это только пустая строка или список расширений, согласованных соединением. |
onclose |
{{ domxref("EventListener") }} | Обработчик событий, вызываемый, когда readyState WebSocket соединения изменяется на CLOSED . Наблюдатель получает CloseEvent с именем "close". |
onerror |
{{ domxref("EventListener") }} |
Обработчик событий, вызываемый, когда происходит ошибка. Это простое событие, называемое "error". |
onmessage |
{{ domxref("EventListener") }} |
Обработчик событий , вызываемый, когда получается сообщение с сервера. Наблюдатель получает |
onopen |
{{ domxref("EventListener") }} |
Наблюдатель событий, вызываемый, когда |
protocol |
{{ DOMXref("DOMString") }} |
Строка, обозначающая имя подпротокола выбранного сервера; это будет одной из строк, указываемой в параметре |
readyState |
unsigned short |
Текущее состояние подключения; это одно из {{ anch("Ready state constants") }}. Только для чтения. |
url |
{{ DOMXref("DOMString") }} |
URL, создаваемый конструктором. Это всегда абсолютный URL. Только для чтения. |
Эти константы используются атрибутом readyState
для описания состояния WebSocket - подключения
Константа | Значение | Описание |
CONNECTING |
0 |
Соединение ещё не открыто. |
OPEN |
1 |
Соединение открыто и готово к обмену данными. |
CLOSING |
2 |
Соединение в процессе закрытия. |
CLOSED |
3 |
Соединение закрыто или не может открыться. |
Закрывает WebSocket - подключение или заканчивает попытку подключения. Если подключение уже закрыто, этот метод не делает ничего.
void close( in optional unsigned short code, in optional DOMString reason );
code
{{ optional_inline() }}CloseEvent
, чтобы узнать разрешенные значения.reason
{{ optional_inline() }}INVALID_ACCESS_ERR
code
.SYNTAX_ERR
reason
слишком длинные или содержит непарные суррогаты.В Gecko этот метод не поддерживает никакие параметры включительно до Gecko 8.0 {{ geckoRelease("8.0") }}.
Передает данные на сервер через WebSocket - соединение.
void send( in DOMString data ); void send( in ArrayBuffer data ); void send( in Blob data );
data
INVALID_STATE_ERR
SYNTAX_ERR
data
содержит непарные суррогатыЗаметьте: Gecko - реализация метода send()
несколько отличается от специфицированной в {{Gecko("6.0")}}; Gecko возвращает boolean
, обозначающий, открыто ли соединение до сих пор (и, в дополнение, были ли доставлены данные); это было исправлено в {{Gecko("8.0")}}.
Начиная с {{Gecko("11.0")}}, поддержка ArrayBuffer
была реализована, но не {{ domxref("Blob") }} типы данных.
Спецификация | Статус |
{{SpecName("HTML WHATWG", "web-sockets.html#the-websocket-interface", "WebSocket")}} | {{Spec2("HTML WHATWG")}} |
// Создает WebSocket - подключение.
const socket = new WebSocket('ws://localhost:8080');
// Соединение открыто
socket.addEventListener('open', function (event) {
socket.send('Hello Server!');
});
// Наблюдает за сообщениями
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});
{{Compat("api.WebSocket")}}