Веб-сокеты
Обеспечьте обмен данными в реальном времени между клиентами и серверами с помощью веб-сокетов. Инструменты для создания интерактивных и динамичных приложений.
Например, WebSocket
интерфейс CloseEvent
Интерфейс CloseEvent представляет событие, возникающее при закрытии соединения WebSocket.
Это событие отправляется клиенту при закрытии соединения и содержит информацию о причине закрытия в свойствах code, reason и wasClean.
Примеры
// Handling a close event
ws.addEventListener("close", (event: CloseEvent) => {
console.log(`Connection closed with code ${event.code}`);
console.log(`Reason: ${event.reason}`);
console.log(`Clean close: ${event.wasClean}`);
if (event.code === 1006) {
console.log("Connection closed abnormally");
}
});
Свойства
code: number Возвращает код закрытия соединения WebSocket, предоставленный сервером.
reason: string Возвращает причину закрытия соединения WebSocket, предоставленную сервером.
wasClean: boolean Возвращает true, если соединение было закрыто корректно; в противном случае — false.
См. также
переменная CloseEvent
Интерфейс конструктора для создания экземпляров CloseEvent.
Примеры
// Creating a custom close event
const event = new CloseEvent("close", {
code: 1000,
reason: "Normal closure",
wasClean: true,
});
// Dispatching the event
myWebSocket.dispatchEvent(event);
Свойства
prototype: CloseEvent См. также
интерфейс CloseEventInit
Параметры конфигурации события «close» WebSocket.
Примеры
// Creating a custom close event with specific parameters
const closeEventInit: CloseEventInit = {
code: 1000,
reason: "Normal closure",
wasClean: true,
};
const event = new CloseEvent("close", closeEventInit);
Свойства
См. также
интерфейс WebSocket
Предоставляет API для создания подключения WebSocket к серверу и управления им, а также для отправки и получения данных через это подключение.
Если вы хотите создать сервер WebSocket, ознакомьтесь с Deno.upgradeWebSocket().
Примеры
// Creating a WebSocket connection
const ws = new WebSocket("ws://localhost:8080");
// Setting up event handlers
ws.onopen = (event) => {
console.log("Connected to the server");
ws.send("Hello Server!");
};
ws.onmessage = (event) => {
console.log(`Received: ${event.data}`);
};
ws.onerror = (event) => {
console.error("WebSocket error observed:", event);
};
ws.onclose = (event) => {
console.log(`WebSocket closed: Code=${event.code}, Reason=${event.reason}`);
};
Свойства
Возвращает строку, указывающую, как двоичные данные объекта WebSocket доступны скриптам:
Значение можно задать, чтобы изменить способ возврата двоичных данных. По умолчанию используется значение "blob".
const ws = new WebSocket("ws://localhost:8080");
ws.binaryType = "arraybuffer";
bufferedAmount: number Возвращает количество байтов данных приложения (текста в UTF-8 и двоичных данных), поставленных в очередь с помощью send(), но ещё не переданных в сеть.
Если подключение WebSocket закрыто, значение этого атрибута будет только увеличиваться при каждом вызове метода send(). (После закрытия подключения значение не сбрасывается до нуля.)
const ws = new WebSocket("ws://localhost:8080");
ws.send("Hello, world!");
console.log(ws.bufferedAmount); // 13
extensions: string Возвращает выбранные сервером расширения, если они есть.
Расширения WebSocket добавляют необязательные функции, согласуемые во время рукопожатия с помощью заголовка Sec-WebSocket-Extensions.
На момент написания текста зарегистрированы два расширения:
-
permessage-deflate: включает сжатие каждого сообщения с помощью DEFLATE. -
bbf-usp-protocol: используется платформой User Services Platform (USP) организации Broadband Forum.
Расширения WebSocket IANA.
Пример:
const ws = new WebSocket("ws://localhost:8080");
console.log(ws.extensions); // e.g., "permessage-deflate"
onclose: ((
this: WebSocket,
ev: CloseEvent,
) => any) | null onerror: ((
this: WebSocket,
ev: Event | ErrorEvent,
) => any) | null onmessage: ((
this: WebSocket,
ev: MessageEvent,
) => any) | null protocol: string Возвращает выбранный сервером подпротокол, если он есть. Его можно использовать вместе с массивом во втором аргументе конструктора для согласования подпротокола.
readyState: number Возвращает состояние подключения объекта WebSocket. Оно может принимать значения, описанные ниже.
url: string Возвращает URL, использованный для установки подключения WebSocket.
CLOSED: number CLOSING: number CONNECTING: number OPEN: number Методы
close(
code?: number,
reason?: string,
): void Закрывает соединение WebSocket, при необходимости используя code в качестве кода закрытия соединения WebSocket и reason в качестве причины закрытия соединения WebSocket.
Передает данные через соединение WebSocket. data может быть строкой, Blob, ArrayBuffer или ArrayBufferView.
addEventListener<K extends keyof WebSocketEventMap>(
type: K,
listener: (
this: WebSocket,
ev: WebSocketEventMap[K],
) => any,
options?: boolean | AddEventListenerOptions,
): void addEventListener(
type: string,
listener: EventListenerOrEventListenerObject,
options?: boolean | AddEventListenerOptions,
): void removeEventListener<K extends keyof WebSocketEventMap>(
type: K,
listener: (
this: WebSocket,
ev: WebSocketEventMap[K],
) => any,
options?: boolean | EventListenerOptions,
): void removeEventListener(
type: string,
listener: EventListenerOrEventListenerObject,
options?: boolean | EventListenerOptions,
): void См. также
переменная WebSocket
Интерфейс конструктора для создания экземпляров WebSocket.
Конструктор WebSocket создает и возвращает новый объект WebSocket, представляющий подключение к серверу WebSocket.
Примеры
// Basic WebSocket connection
const ws = new WebSocket("ws://localhost:8080");
// WebSocket with protocol specification
const wsWithProtocol = new WebSocket("ws://localhost:8080", "json");
// WebSocket with multiple protocol options (server will select one)
const wsWithProtocols = new WebSocket("ws://localhost:8080", ["json", "xml"]);
// Using URL object instead of string
const url = new URL("ws://localhost:8080/path");
const wsWithUrl = new WebSocket(url);
// WebSocket with headers
const wsWithProtocols = new WebSocket("ws://localhost:8080", {
headers: {
"Authorization": "Bearer foo",
},
});
Свойства
См. также
интерфейс WebSocketCloseInfo
интерфейс WebSocketConnection
Свойства
readable: ReadableStream<string | Uint8Array<ArrayBuffer>> writable: WritableStream<string | Uint8Array<ArrayBufferLike>> extensions: string protocol: string интерфейс WebSocketEventMap
Интерфейс, сопоставляющий имена событий WebSocket с соответствующими типами событий. Используется для строго типизированной обработки событий с помощью addEventListener и removeEventListener.
Примеры
// Using with TypeScript for strongly-typed event handling
const ws = new WebSocket("ws://localhost:8080");
ws.addEventListener("open", (event) => {
console.log("Connection established");
});
ws.addEventListener("message", (event: MessageEvent) => {
console.log(`Received: ${event.data}`);
});
Свойства
интерфейс WebSocketOptions
Параметры экземпляра WebSocket. Эта возможность не является стандартной.
Свойства
protocols: string | string[] Подпротоколы, которые клиент предпочёл бы использовать, в порядке предпочтения.
headers: HeadersInit Объект Headers, объектный литерал или массив пар массивов, содержащих по два элемента, для задания заголовков рукопожатия. Эта возможность не является стандартной.
client: Deno.HttpClient Экземпляр HttpClient, используемый при создании WebSocket-соединения. Это полезно, если нужно подключиться через прокси или настроить параметры TLS.
const client = Deno.createHttpClient({
proxy: {
transport: "unix",
path: "/path/to/socket",
},
});
const ws = new WebSocket("ws://localhost:8000/socket", { client });
интерфейс WebSocketStreamOptions
Свойства
protocols: string[] signal: AbortSignal headers: HeadersInit псевдоним типа BinaryType
Указывает тип двоичных данных, получаемых через соединение WebSocket.
-
"blob": двоичные данные возвращаются в виде объектовBlob -
"arraybuffer": двоичные данные возвращаются в виде объектовArrayBuffer
Примеры
// Setting up WebSocket for binary data as ArrayBuffer
const ws = new WebSocket("ws://localhost:8080");
ws.binaryType = "arraybuffer";
ws.onmessage = (event) => {
if (event.data instanceof ArrayBuffer) {
// Process binary data
const view = new Uint8Array(event.data);
console.log(`Received binary data of ${view.length} bytes`);
} else {
// Process text data
console.log(`Received text: ${event.data}`);
}
};
// Sending binary data
const binaryData = new Uint8Array([1, 2, 3, 4]);
ws.send(binaryData.buffer);
Определение
"arraybuffer" | "blob" См. также
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/web/websockets