From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- files/ru/web/api/websocket/index.html | 281 ++++++++++++++++++++++++++++++++++ 1 file changed, 281 insertions(+) create mode 100644 files/ru/web/api/websocket/index.html (limited to 'files/ru/web/api/websocket') diff --git a/files/ru/web/api/websocket/index.html b/files/ru/web/api/websocket/index.html new file mode 100644 index 0000000000..ab46ff35dc --- /dev/null +++ b/files/ru/web/api/websocket/index.html @@ -0,0 +1,281 @@ +--- +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
+
URL-адрес к которому подключаться; сервер по этому адресу должен ответить на websocket-запрос.
+
protocols {{ optional_inline() }}
+
Протокол в виде строки или массив строк протоколов. Эти строки используются для определения подпротоколов клиента, т.к. один сервер может поддерживать несколько WebSocket-подпротоколов (например, вы можете захотеть, чтобы один сервер мог обрабатывать разные типы взаимодействия в зависимости от указанного протокола).  Если вы не укажете значение протокола, по умолчанию будет использоваться пустая строка.
+
+ +

Конструктор может выбросить исключение:

+ +
+
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 
bufferedAmountunsigned longКоличество байтов данных, которые были поставлены в очередь, используя вызовы {{ manch("send") }}, но еще не переданные в сеть. Это значение не сбрасывается в ноль, при закрытии соединения; если продолжить вызывать  {{ manch("send") }}, значение будет расти. Только чтение.
extensions{{ DOMXref("DOMString") }}Расширения, выбранные сервером. В настоящее время это только пустая строка или список расширений, согласованных соединением.
onclose{{ domxref("EventListener") }}Обработчик событий, вызываемый, когда readyState WebSocket соединения изменяется на CLOSED. Наблюдатель получает CloseEvent с именем "close".
onerror{{ domxref("EventListener") }} +

Обработчик событий, вызываемый, когда происходит ошибка. Это простое событие, называемое "error".

+
onmessage{{ domxref("EventListener") }} +

Обработчик событий , вызываемый, когда получается сообщение с сервера. Наблюдатель получает MessageEvent,  называемое "message".

+
onopen{{ domxref("EventListener") }} +

Наблюдатель событий, вызываемый, когда readyState WebSocket - соединения изменяется на OPEN; это показывает, что соединение готово отсылать и принимать данные. Это простое событие, называемое "open".

+
protocol{{ DOMXref("DOMString") }} +

Строка, обозначающая имя подпротокола выбранного сервера; это будет одной из строк, указываемой в параметре protocols при создании WebSocket - объекта.

+
readyStateunsigned short +

Текущее состояние подключения; это одно из {{ anch("Ready state constants") }}. Только для чтения.

+
url{{ DOMXref("DOMString") }} +

URL, создаваемый конструктором. Это всегда абсолютный URL. Только для чтения.

+
+ +

Константы

+ +

Константы состояния готовности

+ +

Эти константы используются аттрибутом readyState для описания состояния WebSocket - подключения

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
КонстантаЗначениеОписание
CONNECTING0Соединение ещё не открыто.
OPEN1Соединение открыто и готово к обмену данными.
CLOSING2Соединение в процессе закрытия.
CLOSED3Соединение закрыто или не может открыться.
+ +

Mетоды

+ +

close()

+ +

Закрывает WebSocket - подключение или заканчивает попытку подключения. Если подключение уже закрыто, этот метод не делает ничего.

+ +
void close(
+  in optional unsigned short code,
+  in optional DOMString reason
+);
+
+ +
Параметры
+ +
+
code {{ optional_inline() }}
+
Числовое значение, обозначающее статус-код, описывающий почему подключение будет закрыто. Если параметр не указан, значение по умолчанию равно 1000(обозначает "обмен завершен"). Смотрите list of status codes для CloseEvent, чтобы узнать разрешенные значения.
+
reason {{ optional_inline() }}
+
Читаемая человеком строка, объясняющая, почему подключение закрывается. Строка должна быть не длиннее, чем 123 байта UTF-8 текста (не символов). 
+
+ +
Возможные исключения
+ +
+
INVALID_ACCESS_ERR
+
Указан неверный code.
+
SYNTAX_ERR
+
Строка reason слишком длинные или содержит непарные суррогаты.
+
+ +
Заметки
+ +

В Gecko этот метод не поддерживает никакие параметры включительно до Gecko 8.0 {{ geckoRelease("8.0") }}.

+ +

send()

+ +

Передает данные на сервер через 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")}}

+
+ +

См. также

+ + -- cgit v1.2.3-54-g00ecf