Spec-Zone.ru › Deno 2

Веб-сокеты

Обеспечьте обмен данными в реальном времени между клиентами и серверами с помощью веб-сокетов. Инструменты для создания интерактивных и динамичных приложений.

Например, WebSocket


интерфейс CloseEvent

наследует Event

Интерфейс 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.

См. также

  • https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent

переменная 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
только для чтения

См. также

  • https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent/CloseEvent


интерфейс CloseEventInit

наследует EventInit

Параметры конфигурации события «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);

Свойства

code: number
необязательное
reason: string
необязательное
wasClean: boolean
необязательное

См. также

  • https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent/CloseEvent


интерфейс WebSocket

наследует EventTarget
allow-net

Предоставляет 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}`);
};

Свойства

binaryType: BinaryType

Возвращает строку, указывающую, как двоичные данные объекта 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
onopen: ((
this: WebSocket,
ev: Event,
) => 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.

send(data:
string
| ArrayBufferLike
| Blob
| ArrayBufferView
): void

Передает данные через соединение 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

См. также

  • https://developer.mozilla.org/docs/Web/API/WebSocket

переменная 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",
  },
});

Свойства

prototype: WebSocket
только для чтения
CLOSED: number
только для чтения
CLOSING: number
только для чтения
CONNECTING: number
только для чтения
OPEN: number
только для чтения

См. также

  • https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket


интерфейс WebSocketCloseInfo

нестабильный

Свойства

code: number
необязательное
reason: string
необязательное

интерфейс WebSocketConnection

нестабильный

Свойства

readable: ReadableStream<string | Uint8Array<ArrayBuffer>>
writable: WritableStream<string | Uint8Array<ArrayBufferLike>>
extensions: string
protocol: string

интерфейс WebSocketError

расширяет DOMException
нестабильный
allow-net

Свойства

closeCode: number
только для чтения
reason: string
только для чтения

переменная WebSocketError

нестабильный
allow-net

Свойства

prototype: WebSocketError
только для чтения

интерфейс 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}`);
});

Свойства

close: CloseEvent
error: Event
message: MessageEvent
open: Event

интерфейс 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 });

интерфейс WebSocketStream

нестабильный
allow-net

Свойства

url: string
opened: Promise<WebSocketConnection>
closed: Promise<WebSocketCloseInfo>

Методы

close(closeInfo?: WebSocketCloseInfo): void

переменная WebSocketStream

нестабильный
allow-net

Свойства

prototype: WebSocketStream
только для чтения

интерфейс 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"

См. также

  • https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/binaryType


© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/web/websockets

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API