Spec-Zone.ru › Deno 2

Сеть

Широкий спектр сетевых задач: от низкоуровневых подключений до создания высокоуровневых серверов. Обрабатывайте HTTP-запросы, взаимодействуйте по WebSocket и выполняйте разрешение DNS-имён. Полезно для создания веб-серверов, клиентов и сетевых инструментов.

Например, Deno.connect, Deno.listen, Deno.resolveDns


класс Deno.QuicEndpoint

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

Конструкторы

QuicEndpoint(options?: QuicEndpointOptions)
новый

Создаёт конечную точку QUIC, которую можно использовать для клиентских подключений или подключений к серверу.

Требуется разрешение allow-net.

Свойства

addr: NetAddr
только для чтения

Возвращает адрес QuicListener.

Методы

close(info?: QuicCloseInfo): void

Закрывает конечную точку. Все связанные подключения будут закрыты, а входящие подключения будут отклонены.

listen(options: QuicListenOptions): QuicListener

Функция listen объявляет адрес локального транспорта для QUIC.


функция Deno.connect

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

Вариант перегрузки 1

connect(options: ConnectOptions): Promise<TcpConn>

Подключается к указанному имени хоста (по умолчанию — "127.0.0.1") и порту с использованием указанного транспорта (по умолчанию — "tcp") и возвращает подключение (Conn).

const conn1 = await Deno.connect({ port: 80 });
const conn2 = await Deno.connect({ hostname: "192.0.2.1", port: 80 });
const conn3 = await Deno.connect({ hostname: "[2001:db8::1]", port: 80 });
const conn4 = await Deno.connect({ hostname: "golang.org", port: 80, transport: "tcp" });

Для "tcp" требуется разрешение allow-net.

Параметры

options: ConnectOptions

Возвращаемый тип

Promise<TcpConn>

Вариант перегрузки 2

connect(options: UnixConnectOptions): Promise<UnixConn>

Подключается к указанному имени хоста (по умолчанию — "127.0.0.1") и порту с использованием указанного транспорта (по умолчанию — "tcp") и возвращает подключение (Conn).

const conn1 = await Deno.connect({ port: 80 });
const conn2 = await Deno.connect({ hostname: "192.0.2.1", port: 80 });
const conn3 = await Deno.connect({ hostname: "[2001:db8::1]", port: 80 });
const conn4 = await Deno.connect({ hostname: "golang.org", port: 80, transport: "tcp" });
const conn5 = await Deno.connect({ path: "/foo/bar.sock", transport: "unix" });

Для "tcp" требуется разрешение allow-net, а для "unix" — allow-read и allow-net. Разрешение allow-net для "unix" можно ограничить путём к сокету с помощью --allow-net=unix:<absolute-path>.

Параметры

options: UnixConnectOptions

Возвращаемый тип

Promise<UnixConn>

Вариант перегрузки 3

connect(options: VsockConnectOptions): Promise<VsockConn>

Подключается к указанному имени хоста (по умолчанию — "127.0.0.1") и порту с использованием указанного транспорта (по умолчанию — "tcp") и возвращает подключение (Conn).

Параметры

options: VsockConnectOptions

Возвращаемый тип

Promise<VsockConn>

функция Deno.connectQuic

нестабильный
allow-net
connectQuic<ZRTT extends boolean>(options: ConnectQuicOptions<ZRTT>): ZRTT extends true ? (QuicConn | Promise<QuicConn>) : Promise<QuicConn>

Устанавливает защищённое подключение по QUIC, используя имя хоста и порт. Файл сертификата необязателен; если он не указан, будут использоваться корневые сертификаты Mozilla. Подробнее см. https://github.com/ctz/webpki-roots.

const caCert = await Deno.readTextFile("./certs/my_custom_root_CA.pem");
const conn1 = await Deno.connectQuic({ hostname: "example.com", port: 443, alpnProtocols: ["h3"] });
const conn2 = await Deno.connectQuic({ caCerts: [caCert], hostname: "example.com", port: 443, alpnProtocols: ["h3"] });

Если одна конечная точка используется совместно несколькими подключениями, можно включить 0-RTT. При успешном 0-RTT объект QuicConn будет возвращён синхронно, и данные можно будет отправлять немедленно. Любые данные, отправленные до завершения рукопожатия TLS, уязвимы для атак повторного воспроизведения.

Требуется разрешение allow-net.

Параметры типа

ZRTT extends boolean

Параметры

options: ConnectQuicOptions<ZRTT>

Возвращаемый тип

ZRTT extends true ? (QuicConn | Promise<QuicConn>) : Promise<QuicConn>

функция Deno.connectTls

allow-net
connectTls(options: ConnectTlsOptions | (ConnectTlsOptions & TlsCertifiedKeyPem)): Promise<TlsConn>

Устанавливает защищённое подключение по TLS (защита транспортного уровня), используя необязательный список сертификатов ЦС, имя хоста (по умолчанию — "127.0.0.1") и порт.

Список сертификатов ЦС необязателен; если он не указан, будут использоваться корневые сертификаты Mozilla (подробности см. также на странице https://github.com/ctz/webpki-roots).

Взаимный TLS (mTLS или клиентские сертификаты) поддерживается при передаче key и cert в параметрах в виде строк, закодированных в PEM.

const caCert = await Deno.readTextFile("./certs/my_custom_root_CA.pem");
const conn1 = await Deno.connectTls({ port: 80 });
const conn2 = await Deno.connectTls({ caCerts: [caCert], hostname: "192.0.2.1", port: 80 });
const conn3 = await Deno.connectTls({ hostname: "[2001:db8::1]", port: 80 });
const conn4 = await Deno.connectTls({ caCerts: [caCert], hostname: "golang.org", port: 80});

const key = "----BEGIN PRIVATE KEY----...";
const cert = "----BEGIN CERTIFICATE----...";
const conn5 = await Deno.connectTls({ port: 80, key, cert });

Требуется разрешение allow-net.

Параметры

options: ConnectTlsOptions | (ConnectTlsOptions & TlsCertifiedKeyPem)

Возвращаемый тип

Promise<TlsConn>

функция Deno.listen

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

Вариант перегрузки 1

listen(options: TcpListenOptions & { transport?: "tcp"; }): TcpListener

Функция listen объявляет адрес локального транспорта.

const listener1 = Deno.listen({ port: 80 })
const listener2 = Deno.listen({ hostname: "192.0.2.1", port: 80 })
const listener3 = Deno.listen({ hostname: "[2001:db8::1]", port: 80 });
const listener4 = Deno.listen({ hostname: "golang.org", port: 80, transport: "tcp" });

Требуется разрешение allow-net.

Параметры

options: TcpListenOptions & { transport?: "tcp"; }

Возвращаемый тип

TcpListener

Вариант перегрузки 2

listen(options: UnixListenOptions & { transport: "unix"; }): UnixListener

Функция listen объявляет адрес локального транспорта.

const listener = Deno.listen({ path: "/foo/bar.sock", transport: "unix" })

Требуются разрешения allow-read, allow-write и allow-net. Разрешение allow-net можно ограничить путём к сокету с помощью --allow-net=unix:<absolute-path>.

Параметры

options: UnixListenOptions & { transport: "unix"; }

Возвращаемый тип

UnixListener

Вариант перегрузки 3

listen(options: VsockListenOptions & { transport: "vsock"; }): VsockListener

Функция listen объявляет адрес локального транспорта.

Параметры

options: VsockListenOptions & { transport: "vsock"; }

Возвращаемый тип

VsockListener

функция Deno.listenDatagram

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

Вариант перегрузки 1

listenDatagram(options: UdpListenOptions & { transport: "udp"; }): DatagramConn

Функция listen объявляет адрес локального транспорта.

const listener1 = Deno.listenDatagram({
  port: 80,
  transport: "udp"
});
const listener2 = Deno.listenDatagram({
  hostname: "golang.org",
  port: 80,
  transport: "udp"
});

Требуется разрешение allow-net.

Параметры

options: UdpListenOptions & { transport: "udp"; }

Возвращаемый тип

DatagramConn

Вариант перегрузки 2

listenDatagram(options: UnixListenDatagramOptions & { transport: "unixpacket"; }): DatagramConn

Функция listen объявляет адрес локального транспорта.

const listener = Deno.listenDatagram({
  path: "/foo/bar.sock",
  transport: "unixpacket"
});

Требуются разрешения allow-read, allow-write и allow-net. Разрешение allow-net можно ограничить путём к сокету с помощью --allow-net=unix:<absolute-path>.

Параметры

options: UnixListenDatagramOptions & { transport: "unixpacket"; }

Возвращаемый тип

DatagramConn

функция Deno.listenTls

allow-net
listenTls(options: ListenTlsOptions & TlsCertifiedKeyPem): TlsListener

Функция listen объявляет адрес локального транспорта, используя TLS (защиту транспортного уровня).

using listener = Deno.listenTls({
  port: 443,
  cert: Deno.readTextFileSync("./server.crt"),
  key: Deno.readTextFileSync("./server.key"),
});

Требуется разрешение allow-net.

Параметры

options: ListenTlsOptions & TlsCertifiedKeyPem

Возвращаемый тип

TlsListener

функция Deno.networkInterfaces

allow-sys
networkInterfaces(): NetworkInterfaceInfo[]

Возвращает массив сведений о сетевых интерфейсах.

console.log(Deno.networkInterfaces());

Требуется разрешение allow-sys.

Возвращаемый тип

NetworkInterfaceInfo[]

функция Deno.resolveDns

allow-net

Перегрузка 1

resolveDns(
query: string,
recordType:
"A"
| "AAAA"
| "ANAME"
| "CNAME"
| "NS"
| "PTR"
,
options?: ResolveDnsOptions,
): Promise<string[]>

Выполняет разрешение DNS для указанного запроса и возвращает полученные записи.

Выполнение завершается ошибкой, например, в следующих случаях:

  • запрос имеет недопустимый формат.
  • параметр в параметрах недопустим. Например, nameServer.port превышает диапазон 16-разрядного беззнакового целого числа.
  • время ожидания запроса истекло.

Типы записей "A", "AAAA", "ANAME", "CNAME", "NS" и "PTR" возвращают массив строк.

const a = await Deno.resolveDns("example.com", "A");
// ["93.184.215.14"]

const aaaa = await Deno.resolveDns("example.com", "AAAA", {
  nameServer: { ipAddr: "8.8.8.8", port: 53 },
});
// ["2606:2800:21f:cb07:6820:80da:af6b:8b2c"]

Требуется разрешение allow-net.

Параметры

query: string
recordType:
"A"
| "AAAA"
| "ANAME"
| "CNAME"
| "NS"
| "PTR"
options: ResolveDnsOptions
необязательный

Тип возвращаемого значения

Promise<string[]>

Перегрузка 2

resolveDns(
query: string,
recordType: "CAA",
options?: ResolveDnsOptions,
): Promise<CaaRecord[]>

Выполняет разрешение DNS для указанного запроса и возвращает полученные записи.

Выполнение завершается ошибкой, например, в следующих случаях:

  • запрос имеет недопустимый формат.
  • параметр в параметрах недопустим. Например, nameServer.port превышает диапазон 16-разрядного беззнакового целого числа.
  • время ожидания запроса истекло.

Тип записи "CAA" возвращает массив объектов Deno.CaaRecord.

const caa = await Deno.resolveDns("example.com", "CAA");
// [{ critical: false, tag: "issue", value: "letsencrypt.org" }]

Требуется разрешение allow-net.

Параметры

query: string
recordType: "CAA"
options: ResolveDnsOptions
необязательный

Тип возвращаемого значения

Promise<CaaRecord[]>

Перегрузка 3

resolveDns(
query: string,
recordType: "MX",
options?: ResolveDnsOptions,
): Promise<MxRecord[]>

Выполняет разрешение DNS для указанного запроса и возвращает полученные записи.

Выполнение завершается ошибкой, например, в следующих случаях:

  • запрос имеет недопустимый формат.
  • параметр в параметрах недопустим. Например, nameServer.port превышает диапазон 16-разрядного беззнакового целого числа.
  • время ожидания запроса истекло.

Тип записи "MX" возвращает массив объектов Deno.MxRecord.

const mx = await Deno.resolveDns("example.com", "MX");
// [{ preference: 10, exchange: "mail.example.com" }]

Требуется разрешение allow-net.

Параметры

query: string
recordType: "MX"
options: ResolveDnsOptions
необязательный

Тип возвращаемого значения

Promise<MxRecord[]>

Перегрузка 4

resolveDns(
query: string,
recordType: "NAPTR",
options?: ResolveDnsOptions,
): Promise<NaptrRecord[]>

Выполняет разрешение DNS для указанного запроса и возвращает полученные записи.

Выполнение завершается ошибкой, например, в следующих случаях:

  • запрос имеет недопустимый формат.
  • параметр в параметрах недопустим. Например, nameServer.port превышает диапазон 16-разрядного беззнакового целого числа.
  • время ожидания запроса истекло.

Тип записи "NAPTR" возвращает массив объектов Deno.NaptrRecord.

const naptr = await Deno.resolveDns("example.com", "NAPTR");
// [{
//   order: 100,
//   preference: 10,
//   flags: "S",
//   services: "SIP+D2U",
//   regexp: "",
//   replacement: "_sip._udp.example.com",
// }]

Требуется разрешение allow-net.

Параметры

query: string
recordType: "NAPTR"
options: ResolveDnsOptions
необязательный

Тип возвращаемого значения

Promise<NaptrRecord[]>

Перегрузка 5

resolveDns(
query: string,
recordType: "SOA",
options?: ResolveDnsOptions,
): Promise<SoaRecord[]>

Выполняет разрешение DNS для указанного запроса и возвращает полученные записи.

Выполнение завершается ошибкой, например, в следующих случаях:

  • запрос имеет недопустимый формат.
  • параметр в параметрах недопустим. Например, nameServer.port превышает диапазон 16-разрядного беззнакового целого числа.
  • время ожидания запроса истекло.

Тип записи "SOA" возвращает массив объектов Deno.SoaRecord.

const soa = await Deno.resolveDns("example.com", "SOA");
// [{
//   mname: "ns.example.com",
//   rname: "hostmaster.example.com",
//   serial: 2024010101,
//   refresh: 7200,
//   retry: 3600,
//   expire: 1209600,
//   minimum: 3600,
// }]

Требуется разрешение allow-net.

Параметры

query: string
recordType: "SOA"
options: ResolveDnsOptions
необязательный

Тип возвращаемого значения

Promise<SoaRecord[]>

Перегрузка 6

resolveDns(
query: string,
recordType: "SRV",
options?: ResolveDnsOptions,
): Promise<SrvRecord[]>

Выполняет разрешение DNS для указанного запроса и возвращает полученные записи.

Выполнение завершается ошибкой, например, в следующих случаях:

  • запрос имеет недопустимый формат.
  • параметр в параметрах недопустим. Например, nameServer.port превышает диапазон 16-разрядного беззнакового целого числа.
  • время ожидания запроса истекло.

Тип записи "SRV" возвращает массив объектов Deno.SrvRecord.

const srv = await Deno.resolveDns("_sip._tcp.example.com", "SRV");
// [{ priority: 10, weight: 5, port: 5060, target: "sip.example.com" }]

Требуется разрешение allow-net.

Параметры

query: string
recordType: "SRV"
options: ResolveDnsOptions
необязательный

Тип возвращаемого значения

Promise<SrvRecord[]>

Перегрузка 7

resolveDns(
query: string,
recordType: "TXT",
options?: ResolveDnsOptions,
): Promise<string[][]>

Выполняет разрешение DNS для указанного запроса и возвращает полученные записи.

Выполнение завершается ошибкой, например, в следующих случаях:

  • запрос имеет недопустимый формат.
  • параметр в параметрах недопустим. Например, nameServer.port превышает диапазон 16-разрядного беззнакового целого числа.
  • время ожидания запроса истекло.

Тип записи "TXT" возвращает массив массивов строк, поскольку одна запись TXT может быть разделена на несколько символьных строк.

const txt = await Deno.resolveDns("example.com", "TXT");
// [["v=spf1 include:_spf.example.com ~all"]]

Требуется разрешение allow-net.

Параметры

query: string
recordType: "TXT"
options: ResolveDnsOptions
необязательный

Тип возвращаемого значения

Promise<string[][]>

Перегрузка 8

resolveDns(
query: string,
recordType: RecordType,
options?: ResolveDnsOptions,
): Promise<
string[]
| CaaRecord[]
| MxRecord[]
| NaptrRecord[]
| SoaRecord[]
| SrvRecord[]
| string[][]
>

Выполняет разрешение DNS для указанного запроса и возвращает полученные записи.

Выполнение завершается ошибкой, например, в следующих случаях:

  • запрос имеет недопустимый формат.
  • параметр в параметрах недопустим. Например, nameServer.port превышает диапазон 16-разрядного беззнакового целого числа.
  • время ожидания запроса истекло.

Эта перегрузка выбирается, когда тип записи известен только во время выполнения. Структура каждой полученной записи зависит от запрошенного Deno.RecordType — точный тип возвращаемого значения для каждого типа записи см. в описаниях перегрузок выше.

const recordType: Deno.RecordType = "A";
const records = await Deno.resolveDns("example.com", recordType, {
  nameServer: { ipAddr: "8.8.8.8", port: 53 },
});

Требуется разрешение allow-net.

Параметры

query: string
recordType: RecordType
options: ResolveDnsOptions
необязательный

Тип возвращаемого значения

Promise<
string[]
| CaaRecord[]
| MxRecord[]
| NaptrRecord[]
| SoaRecord[]
| SrvRecord[]
| string[][]
>

функция Deno.startTls

allow-net
startTls(
conn: TcpConn,
options?: StartTlsOptions,
): Promise<TlsConn>

Запускает TLS-рукопожатие для существующего соединения, используя необязательный список сертификатов ЦС и имя хоста (по умолчанию — "127.0.0.1"). Указание сертификатов ЦС необязательно. По умолчанию используются настроенные корневые сертификаты. Для использования этой функции необходимо, чтобы другая сторона соединения была готова выполнить TLS-рукопожатие.

Обратите внимание: эта функция потребляет переданное ей TCP-соединение, поэтому после вызова этой функции исходное TCP-соединение становится непригодным для использования. Кроме того, чтобы TCP-соединение было корректно потреблено, при вызове этой функции необходимо убедиться, что оно не используется в другом месте. Например, если Promise ожидает завершения операции чтения для TCP-соединения, считается, что соединение используется в другом месте. В таком случае эта функция завершится ошибкой.

const conn = await Deno.connect({ port: 80, hostname: "127.0.0.1" });
const caCert = await Deno.readTextFile("./certs/my_custom_root_CA.pem");
// `conn` becomes unusable after calling `Deno.startTls`
const tlsConn = await Deno.startTls(conn, { caCerts: [caCert], hostname: "localhost" });

Требуется разрешение allow-net.

Параметры

conn: TcpConn
options: StartTlsOptions
необязательный

Тип возвращаемого значения

Promise<TlsConn>

функция Deno.upgradeWebTransport

нестабильный
upgradeWebTransport(conn: QuicConn): Promise<WebTransport & { url: string; }>

Преобразует QUIC-соединение в экземпляр WebTransport.

Параметры

conn: QuicConn

Тип возвращаемого значения

Promise<WebTransport & { url: string; }>

интерфейс Deno.CaaRecord

Если Deno.resolveDns вызывается с указанным типом записи "CAA", результатом будет массив объектов, реализующих этот интерфейс.

Свойства

critical: boolean

Если true, это указывает, что соответствующий тег свойства должен быть понятен, чтобы издатель мог правильно интерпретировать семантику записи CAA.

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

tag: string

Строка, обозначающая идентификатор свойства, представленного записью.

value: string

Значение, связанное с тегом.


интерфейс Deno.Conn

расширяет Disposable

Универсальное потоковое сетевое соединение, предназначенное для чтения и записи данных.

Параметры типа

A extends Addr = Addr

Свойства

localAddr: A
только для чтения

Локальный адрес соединения.

remoteAddr: A
только для чтения

Удалённый адрес соединения.

readable: ReadableStream<Uint8Array<ArrayBuffer>>
только для чтения

ReadableStream данных, полученных через соединение.

writable: WritableStream<Uint8Array<ArrayBufferLike>>
только для чтения

WritableStream для отправки данных через соединение.

Методы

read(p: Uint8Array): Promise<number | null>

Читает входящие данные из соединения в буфер массива (p).

Результатом будет либо число байтов, прочитанных во время операции, либо EOF (null), если больше нечего читать.

Операция чтения может успешно завершиться, вернув 0 байтов. Это не означает EOF.

Не гарантируется, что за один вызов будет прочитан весь буфер.

// If the text "hello world" is received by the client:
const conn = await Deno.connect({ hostname: "example.com", port: 80 });
const buf = new Uint8Array(100);
const numberOfBytesRead = await conn.read(buf); // 11 bytes
const text = new TextDecoder().decode(buf);  // "hello world"
write(p: Uint8Array): Promise<number>

Записывает содержимое буфера массива (p) в соединение.

Результатом будет число записанных байтов.

Не гарантируется, что за один вызов будет записан весь буфер.

const conn = await Deno.connect({ hostname: "example.com", port: 80 });
const encoder = new TextEncoder();
const data = encoder.encode("Hello world");
const bytesWritten = await conn.write(data); // 11
close(): void

Закрывает соединение и освобождает ресурс.

const conn = await Deno.connect({ hostname: "example.com", port: 80 });

// ...

conn.close();
closeWrite(): Promise<void>

Завершает работу (shutdown(2)) стороны соединения, предназначенной для записи. Большинству вызывающих сторон следует просто использовать close().

ref(): void

Не позволяет циклу событий завершиться, пока открыто соединение.

Примечание: по умолчанию соединение не позволяет циклу событий завершиться. Этот метод имеет смысл только после вызова .unref().

unref(): void

Позволяет циклу событий завершиться, даже если соединение открыто.


интерфейс Deno.ConnectOptions

Параметры, которые можно задать при подключении с помощью Deno.connect.

Свойства

port: number

Порт для подключения.

hostname: string = "127.0.0.1"
необязательно

IP-адрес в буквенной записи или имя хоста, которое можно преобразовать в IP-адрес. Если не указано,

transport: "tcp"
необязательно

Используемый протокол транспортного уровня.

signal: AbortSignal
необязательно

Объект AbortSignal для закрытия TCP-соединения.

autoSelectFamily: boolean = true
необязательно

Включает алгоритм Happy Eyeballs (RFC 8305) для автоматического выбора семейства адресов. Если он включён, для более быстрого установления соединения будут выполняться попытки подключения по адресам IPv6 и IPv4, чередуя их.

autoSelectFamilyAttemptDelay: number = 250
необязательно

Задержка в миллисекундах между запуском новых попыток подключения при использовании Happy Eyeballs. Новая попытка подключения запускается каждые autoSelectFamilyAttemptDelay миллисекунд, пока одна из них не завершится успешно.


интерфейс Deno.ConnectQuicOptions

расширяет QuicTransportOptions
нестабильный

Параметры типа

ZRTT extends boolean

Свойства

port: number

Порт для подключения.

hostname: string

IP-адрес в буквенной записи или имя хоста, которое можно преобразовать в IP-адрес.

serverName: string | undefined
необязательно

Имя, используемое для проверки сертификата, предоставленного сервером. Если не указано, по умолчанию используется hostname.

alpnProtocols: string[]

Поддерживаемые клиентом протоколы согласования протокола прикладного уровня (ALPN). Для QUIC необходимо использовать ALPN.

caCerts: string[]
необязательно

Список корневых сертификатов, которые будут использоваться вместе с корневыми сертификатами по умолчанию для проверки сертификата узла.

Должны быть в формате PEM.

endpoint: QuicEndpoint
необязательно

Если конечная точка не указана, новая конечная точка привязывается к эфемерному порту.

zeroRtt: ZRTT = false
необязательно

Пытается преобразовать соединение в режим 0-RTT. Любые данные, отправленные до завершения TLS-рукопожатия, уязвимы для атак повторного воспроизведения.


интерфейс Deno.ConnectTlsOptions

Параметры, которые можно задать при установлении TLS-соединения с помощью Deno.connectTls.

Свойства

port: number

Порт для подключения.

hostname: string = "127.0.0.1"
необязательно

IP-адрес в буквенной записи или имя хоста, которое можно преобразовать в IP-адрес.

caCerts: string[]
необязательно

Список корневых сертификатов, которые будут использоваться вместе с корневыми сертификатами по умолчанию для проверки сертификата узла.

Должны быть в формате PEM.

alpnProtocols: string[]
необязательно

Поддерживаемые клиентом протоколы согласования протокола прикладного уровня (ALPN). Если параметр не задан, расширение ALPN не включается в TLS-рукопожатие.

unsafelyDisableHostnameVerification: boolean = false
необязательно

Если значение равно true, общее имя или альтернативные имена субъекта сертификата не будут сверяться с именем хоста, указанным в параметрах.

Это отключает проверку имени хоста, но проверка цепочки сертификатов по-прежнему выполняется. Используйте с осторожностью и только при подключении к известным серверам.

autoSelectFamily: boolean = true
необязательно

Включает алгоритм Happy Eyeballs (RFC 8305) для автоматического выбора семейства адресов. Если он включён, для более быстрого установления соединения будут выполняться попытки подключения по адресам IPv6 и IPv4, чередуя их.

autoSelectFamilyAttemptDelay: number = 250
необязательно

Задержка в миллисекундах между запуском новых попыток подключения при использовании Happy Eyeballs. Новая попытка подключения запускается каждые autoSelectFamilyAttemptDelay миллисекунд, пока одна из них не завершится успешно.


интерфейс Deno.DatagramConn

расширяет AsyncIterable<[Uint8Array<ArrayBuffer>, Addr]>
нестабильный

Универсальный транспортный прослушиватель для протоколов, ориентированных на сообщения.

Свойства

addr: Addr
только для чтения

Возвращает адрес экземпляра.

Методы

joinMulticastV4(
address: string,
networkInterface: string,
): Promise<MulticastV4Membership>

Присоединяется к группе многоадресной рассылки IPv4.

joinMulticastV6(
address: string,
networkInterface: number,
): Promise<MulticastV6Membership>

Присоединяется к группе многоадресной рассылки IPv6.

receive(p?: Uint8Array): Promise<[Uint8Array<ArrayBuffer>, Addr]>

Ожидает следующее сообщение для экземпляра и разрешается с ним.

Сообщения принимаются в виде кортежа, содержащего массив данных и сведения об адресе.

send(
p: Uint8Array,
addr: Addr,
): Promise<number>

Отправляет сообщение целевому узлу через соединение. Метод разрешается с количеством отправленных байтов.

close(): void

Закрывает сокет. Все ожидающие промисы сообщений будут отклонены с ошибками.

[[Symbol.asyncIterator]](): AsyncIterableIterator<[Uint8Array<ArrayBuffer>, Addr]>

интерфейс Deno.Listener

расширяет AsyncIterable<T>Disposable

Универсальный сетевой прослушиватель для потоковых протоколов.

Параметры типа

T extends Conn = Conn
A extends Addr = Addr

Свойства

addr: A
только для чтения

Возвращает адрес Listener.

Методы

accept(): Promise<T>

Ожидает следующее подключение к Listener и разрешается с ним.

close(): void

Закрывает прослушиватель. Все ожидающие промисы accept будут отклонены с ошибками. Ожидающий вызов next() асинхронного итератора завершится после отклонения базового промиса accept.

Если у прослушивателя есть ожидающая операция accept, базовый сокет может быть освобождён только после отклонения ожидающего промиса. Если сразу после закрытия прослушивателя нужно прослушивать тот же адрес, дождитесь завершения ожидающего промиса accept, прежде чем снова вызывать Deno.listen.

[[Symbol.asyncIterator]](): AsyncIterableIterator<T>

Перебирает подключения, принятые прослушивателем.

ref(): void

Не позволяет циклу событий завершиться, пока активен прослушиватель.

Примечание: по умолчанию прослушиватель не позволяет циклу событий завершиться. Этот метод имеет смысл только после вызова .unref().

unref(): void

Позволяет циклу событий завершиться, даже если прослушиватель активен.


интерфейс Deno.ListenOptions

Параметры, которые можно задать при открытии прослушивателя с помощью Deno.listen.

Свойства

port: number
необязательно

Порт, на котором будет выполняться прослушивание.

Укажите 0, чтобы прослушивать любой доступный порт.

hostname: string = "0.0.0.0"
необязательно

IP-адрес в буквенной записи или имя хоста, которое можно преобразовать в IP-адрес.

Примечание об 0.0.0.0 Хотя прослушивание на 0.0.0.0 работает на всех платформах, браузеры в Windows не работают с адресом 0.0.0.0. Если ваша программа поддерживает Windows, вместо server running on 0.0.0.0:8080 следует показывать сообщение, например server running on localhost:8080.

tcpBacklog: number = 511
необязательно

Максимальное количество ожидающих подключений в очереди прослушивания.

Этот параметр определяет, сколько входящих подключений операционная система может поставить в очередь в ожидании их принятия приложением. Если при заполненной очереди поступят новые подключения, они будут отклонены.

Ядро может скорректировать это значение (например, округлить его до следующей степени двойки плюс 1). В разных операционных системах установлены разные максимальные значения.


интерфейс Deno.ListenTlsOptions

расширяет TcpListenOptions

Параметры, которые можно задать при открытии TLS-прослушивателя с помощью Deno.listenTls.

Свойства

transport: "tcp"
необязательно

Используемый протокол транспортного уровня.

alpnProtocols: string[]
необязательно

Протоколы согласования протокола прикладного уровня (ALPN), объявляемые клиенту. Если параметр не задан, расширение ALPN не включается в TLS-рукопожатие.


интерфейс Deno.MulticastV4Membership

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

Представляет членство в группе многоадресной рассылки IPv4.

Свойства

leave: () => Promise<void>

Покидает группу многоадресной рассылки.

setLoopback: (loopback: boolean) => Promise<void>

Устанавливает параметр зацикливания многоадресной рассылки. Если он включён, пакеты многоадресной рассылки будут возвращаться в локальный сокет.

setTTL: (ttl: number) => Promise<void>

Устанавливает время жизни исходящих пакетов многоадресной рассылки для этого сокета.


интерфейс Deno.MulticastV6Membership

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

Представляет членство в группе многоадресной рассылки IPv6.

Свойства

leave: () => Promise<void>

Покидает группу многоадресной рассылки.

setLoopback: (loopback: boolean) => Promise<void>

Устанавливает параметр зацикливания многоадресной рассылки. Если он включён, пакеты многоадресной рассылки будут возвращаться в локальный сокет.


интерфейс Deno.MxRecord

Если Deno.resolveDns вызывается с указанным типом записи "MX", он возвращает массив объектов, реализующих этот интерфейс.

Свойства

preference: number

Значение приоритета, относительное по сравнению с другими значениями приоритета MX-записей домена.

exchange: string

Сервер, на который следует доставлять почту.


интерфейс Deno.NaptrRecord

Если Deno.resolveDns вызывается с указанным типом записи "NAPTR", он возвращает массив объектов, реализующих этот интерфейс.

Свойства

order: number
preference: number
flags: string
services: string
regexp: string
replacement: string

интерфейс Deno.NetAddr

Адрес сетевого подключения или прослушивающего сокета, использующего транспорт на основе IP.

Свойства

transport: "tcp" | "udp"

Транспортный протокол на основе IP.

hostname: string

IP-адрес.

port: number

Номер порта.


интерфейс Deno.NetworkInterfaceInfo

Информация о сетевом интерфейсе, возвращаемая вызовом Deno.networkInterfaces.

Свойства

name: string

Имя сетевого интерфейса.

family: "IPv4" | "IPv6"

Версия IP-протокола.

address: string

IP-адрес, назначенный интерфейсу.

netmask: string

Маска подсети, применённая к интерфейсу.

scopeid: number | null

Идентификатор зоны IPv6 или null.

cidr: string

Диапазон CIDR.

mac: string

MAC-адрес.


интерфейс Deno.QuicAcceptOptions

расширяет QuicServerTransportOptions
нестабильный

Параметры типа

ZRTT extends boolean

Свойства

alpnProtocols: string[]
необязательное

Протоколы согласования протокола прикладного уровня (ALPN), объявляемые клиенту. Для QUIC требуется использовать ALPN.

zeroRtt: ZRTT = false
необязательное

Преобразует это подключение в режим 0.5-RTT ценой снижения безопасности, поскольку данные 0.5-RTT могут быть отправлены до аутентификации клиента TLS.


интерфейс Deno.QuicBidirectionalStream

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

Свойства

readable: QuicReceiveStream
только для чтения

Возвращает экземпляр QuicReceiveStream, который можно использовать для чтения входящих данных.

writable: QuicSendStream
только для чтения

Возвращает экземпляр QuicSendStream, который можно использовать для записи исходящих данных.


интерфейс Deno.QuicCloseInfo

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

Свойства

closeCode: number

Число, представляющее код ошибки.

reason: string

Строка, содержащая причину закрытия подключения.


интерфейс Deno.QuicConn

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

Свойства

endpoint: QuicEndpoint
только для чтения

Конечная точка этого подключения.

handshake: Promise<void>
только для чтения

Возвращает промис, который разрешается после завершения рукопожатия TLS.

remoteAddr: NetAddr
только для чтения

Возвращает удалённый адрес подключения. Клиенты могут менять адреса по своему усмотрению, например при переключении на мобильное подключение к Интернету.

protocol: string | undefined
только для чтения

Согласованный протокол ALPN, если он был предоставлен. Доступен только после завершения рукопожатия.

serverName: string | undefined
только для чтения

Согласованное имя сервера. Доступно на сервере только после завершения рукопожатия.

closed: Promise<QuicCloseInfo>
только для чтения

Возвращает промис, который разрешается после закрытия подключения.

incomingBidirectionalStreams: ReadableStream<QuicBidirectionalStream>
только для чтения

Поток двунаправленных потоков, открытых узлом-партнёром.

incomingUnidirectionalStreams: ReadableStream<QuicReceiveStream>
только для чтения

Поток однонаправленных потоков, открытых узлом-партнёром.

maxDatagramSize: number
только для чтения

Возвращает поток дейтаграмм для отправки и получения дейтаграмм.

Методы

close(info?: QuicCloseInfo): void

Закрывает прослушивающий сокет. Все ожидающие промисы accept будут отклонены с ошибками.

createBidirectionalStream(options?: QuicSendStreamOptions): Promise<QuicBidirectionalStream>

Открывает и возвращает двунаправленный поток.

createUnidirectionalStream(options?: QuicSendStreamOptions): Promise<QuicSendStream>

Открывает и возвращает однонаправленный поток.

sendDatagram(data: Uint8Array): Promise<void>

Отправляет дейтаграмму. Размер переданных данных не может превышать maxDatagramSize.

readDatagram(): Promise<Uint8Array<ArrayBuffer>>

Получает дейтаграмму.


интерфейс Deno.QuicEndpointOptions

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

Свойства

hostname: string = "::"
необязательное

IP-адрес в буквенной записи или имя хоста, которое можно разрешить в IP-адрес.

port: number = 0
необязательное

Порт, к которому нужно привязаться.


интерфейс Deno.QuicIncoming

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

Входящее подключение, для которого сервер ещё не начал свою часть рукопожатия.

Свойства

localIp: string
только для чтения

Локальный IP-адрес, который использовался узлом-партнёром при установлении подключения.

remoteAddr: NetAddr
только для чтения

UDP-адрес узла-партнёра.

remoteAddressValidated: boolean
только для чтения

Подтвердил ли сокетный адрес, инициирующий это подключение, возможность получать трафик.

Методы

accept<ZRTT extends boolean>(options?: QuicAcceptOptions<ZRTT>): ZRTT extends true ? QuicConn : Promise<QuicConn>

Принимает это входящее подключение.

refuse(): void

Отклоняет это входящее подключение.

ignore(): void

Игнорирует попытку входящего подключения, не отправляя ответных пакетов.


интерфейс Deno.QuicListener

расширяет AsyncIterable<QuicIncoming>
нестабильный

Специализированный прослушивающий сокет, принимающий подключения QUIC.

Свойства

endpoint: QuicEndpoint
только для чтения

Конечная точка этого прослушивающего сокета.

Методы

incoming(): Promise<QuicIncoming>

Ожидает следующее входящее подключение и возвращает его.

accept(): Promise<QuicConn>

Ожидает следующее входящее подключение и принимает его.

stop(): void

Останавливает прослушивающий сокет. При этом конечная точка не закрывается.

[[Symbol.asyncIterator]](): AsyncIterableIterator<QuicIncoming>

Перебирает входящие подключения, полученные прослушивающим сокетом.


интерфейс Deno.QuicListenOptions

расширяет QuicServerTransportOptions
нестабильный

Свойства

alpnProtocols: string[]

Протоколы согласования протокола прикладного уровня (ALPN), объявляемые клиенту. Для QUIC требуется использовать ALPN.

key: string

Закрытый ключ сервера в формате PEM

cert: string

Цепочка сертификатов в формате PEM


интерфейс Deno.QuicReceiveStream

наследует ReadableStream<Uint8Array<ArrayBuffer>>
нестабильный

Свойства

id: bigint
только для чтения

62-разрядный идентификатор потока, уникальный в пределах этого соединения.


интерфейс Deno.QuicSendStream

наследует WritableStream<Uint8Array<ArrayBufferLike>>
нестабильный

Свойства

sendOrder: number

Определяет приоритет отправки данных этого потока относительно других потоков, для которых задано это значение.

id: bigint
только для чтения

62-разрядный идентификатор потока, уникальный в пределах этого соединения.


интерфейс Deno.QuicSendStreamOptions

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

Свойства

sendOrder: number = 0
необязательный

Определяет приоритет отправки данных этого потока относительно других потоков, для которых задано это значение.

waitUntilAvailable: boolean = false
необязательный

Ожидать появления достаточного кредита управления потоком для создания потока.


интерфейс Deno.QuicServerTransportOptions

наследует QuicTransportOptions
нестабильный

Свойства

preferredAddressV4: string = undefined
необязательный

Предпочтительный адрес IPv4, который передается клиенту во время рукопожатия. Если клиент сможет подключиться к этому адресу, он переключится на него.

preferredAddressV6: string = undefined
необязательный

Предпочтительный адрес IPv6, который передается клиенту во время рукопожатия. Если клиент сможет подключиться к этому адресу, он переключится на него.


интерфейс Deno.QuicTransportOptions

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

Свойства

keepAliveInterval: number = undefined
необязательный

Период бездействия перед отправкой пакета поддержания активности. Такие пакеты не дают завершиться по тайм-ауту неактивному, но в остальном исправному соединению. Для сохранения соединения достаточно включить поддержание активности только на одной из его сторон.

maxIdleTimeout: number = undefined
необязательный

Максимальная длительность бездействия, допустимая до завершения соединения по тайм-ауту. Фактический тайм-аут бездействия равен меньшему из этого значения и собственного максимального тайм-аута бездействия узла-партнера.

maxConcurrentBidirectionalStreams: number = 100
необязательный

Максимальное количество одновременно открытых входящих двунаправленных потоков.

maxConcurrentUnidirectionalStreams: number = 100
необязательный

Максимальное количество одновременно открытых входящих однонаправленных потоков.

congestionControl:
"throughput"
| "low-latency"
| "default"
= "default"
необязательный

Алгоритм управления перегрузкой, используемый при отправке данных через это соединение.


интерфейс Deno.ResolveDnsOptions

Параметры, которые можно задать при использовании Deno.resolveDns.

Свойства

nameServer: { ipAddr: string; port?: number; }
необязательный

Сервер имен, используемый для поиска.

Если параметр не указан, используется системная конфигурация. Например, /etc/resolv.conf в Unix-подобных системах.

signal: AbortSignal
необязательный

Сигнал отмены, позволяющий прервать операцию разрешения DNS. Если сигнал будет прерван, операция resolveDns остановится, а возвращенный промис будет отклонен с ошибкой AbortError.


интерфейс Deno.SoaRecord

Если Deno.resolveDns вызвана с указанным типом записи "SOA", она вернет массив объектов, реализующих этот интерфейс.

Свойства

mname: string
rname: string
serial: number
refresh: number
retry: number
expire: number
minimum: number

интерфейс Deno.SrvRecord

Если Deno.resolveDns вызвана с указанным типом записи "SRV", она вернет массив объектов, реализующих этот интерфейс.

Свойства

priority: number
weight: number
port: number
target: string

интерфейс Deno.StartTlsOptions

Параметры, которые можно задать при обновлении существующего соединения до TLS с помощью Deno.startTls.

Свойства

hostname: string = "127.0.0.1"
необязательный

IP-адрес в буквальном виде или имя хоста, которое можно преобразовать в IP-адрес.

caCerts: string[]
необязательный

Список корневых сертификатов, используемых вместе с корневыми сертификатами по умолчанию для проверки сертификата узла-партнера.

Должен быть в формате PEM.

alpnProtocols: string[]
необязательный

Протоколы согласования протокола прикладного уровня (ALPN), объявляемые клиенту. Если параметр не указан, расширение ALPN не включается в рукопожатие TLS.

unsafelyDisableHostnameVerification: boolean = false
необязательный

Если значение равно true, общее имя сертификата или альтернативные имена субъекта не будут проверяться на соответствие имени хоста, указанному в параметрах.

Это отключает проверку имени хоста, но проверка цепочки сертификатов продолжает выполняться. Используйте с осторожностью и только при подключении к известным серверам.


интерфейс Deno.TcpConn

наследует Conn<NetAddr>

Потоковое соединение TCP.

Методы

setNoDelay(noDelay?: boolean): void

Устанавливает для этого соединения параметр TCP_NODELAY, который определяет, используется ли алгоритм Нейгла.

Обратите внимание: логическое значение означает noDelay, а не «включить алгоритм Нейгла», поэтому смысл противоположен включению алгоритма:

  • setNoDelay(true) (значение по умолчанию) устанавливает TCP_NODELAY, что отключает алгоритм Нейгла. Небольшие порции данных отправляются немедленно с меньшей задержкой, но потенциально увеличивается количество небольших пакетов.
  • setNoDelay(false) сбрасывает TCP_NODELAY, что включает алгоритм Нейгла. Небольшие порции данных могут буферизироваться и объединяться, чтобы уменьшить количество отправляемых пакетов.
setKeepAlive(keepAlive?: boolean): void

Включает или отключает пробы TCP для поддержания активности в этом соединении. Передайте true, чтобы включить поддержание активности, и false, чтобы отключить его.


интерфейс Deno.TcpListenOptions

наследует ListenOptions
нестабильный

Свойства

reusePort: boolean = false
необязательный

Если true, для прослушивающего сокета будет установлен флаг SO_REUSEPORT. Это позволяет нескольким процессам прослушивать один и тот же адрес и порт.

В Linux это приведет к тому, что ядро будет распределять входящие соединения между разными процессами, прослушивающими один и тот же адрес и порт.

Этот флаг поддерживается только в Linux. На других платформах он молча игнорируется.

Параметры, которые можно задать при открытии TCP-сокета для прослушивания с помощью Deno.listen.


интерфейс Deno.TlsCertifiedKeyPem

Предоставляет сертифицированный ключевой материал из строк. Ключевой материал представлен в формате PEM (Privacy Enhanced Mail, https://www.rfc-editor.org/rfc/rfc1422); его можно распознать по маркерам -----BEGIN----- и -----END----- в начале и конце строк. Этот тип ключа несовместим с ключами в формате DER, которые являются двоичными.

Deno поддерживает ключи форматов RSA, EC и PKCS8.

const key = {
 key: "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
 cert: "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n" }
};

Свойства

keyFormat: "pem"
необязательный

Формат этого ключевого материала — PEM.

key: string

Закрытый ключ в формате PEM. Поддерживаются ключи форматов RSA, EC и PKCS8.

cert: string

Цепочка сертификатов в формате PEM.


интерфейс Deno.TlsConn

наследует Conn<NetAddr>

Зашифрованное с помощью TLS потоковое соединение через транспорт на основе IP.

Методы

handshake(): Promise<TlsHandshakeInfo>

Выполняет до конца протокол рукопожатия клиента или сервера, если он еще не был выполнен. Вызов этого метода необязателен: рукопожатие TLS будет завершено автоматически при первой отправке или получении данных.


интерфейс Deno.TlsHandshakeInfo

Сведения о завершенном рукопожатии TLS.

Свойства

alpnProtocol: string | null

Содержит протокол ALPN, выбранный при согласовании с сервером. Если протокол ALPN не выбран, возвращает null.


интерфейс Deno.UdpListenOptions

наследует ListenOptions
нестабильный

Нестабильные параметры, которые можно задать при открытии прослушивателя датаграмм с помощью Deno.listenDatagram.

Свойства

reuseAddress: boolean = false
необязательный

Если true, указанный адрес будет использоваться повторно, даже если другой процесс уже привязал к нему сокет. Фактически это позволяет перехватить сокет у прослушивателя.

loopback: boolean = false
необязательный

Если true, отправленные многоадресные пакеты будут возвращаться на локальный сокет.


интерфейс Deno.UnixAddr

Адрес сетевого подключения или прослушивающего сокета, использующего доменный сокет Unix.

Свойства

transport: "unix" | "unixpacket"

Протокол транспорта доменного сокета Unix.

path: string

Путь к сокету в файловой системе.


интерфейс Deno.UnixConn

расширяет Conn<UnixAddr>

Потоковое подключение через доменный сокет Unix.


интерфейс Deno.UnixConnectOptions

Параметры подключения к доменному сокету Unix с помощью Deno.connect.

Свойства

transport: "unix"

Протокол транспорта доменного сокета Unix.

path: string

Путь в файловой системе к сокету, к которому нужно подключиться.


интерфейс Deno.UnixListenDatagramOptions

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

Нестабильные параметры, которые можно задать при открытии прослушивающего сокета дейтаграмм unixpacket с помощью Deno.listenDatagram.

Свойства

path: string
необязательный

Путь к сокету Unix. Если путь не указан, сокет остается непривязанным: его можно использовать для отправки сообщений, но не для их получения.


интерфейс Deno.UnixListenOptions

Параметры, которые можно задать при открытии прослушивающего сокета Unix с помощью Deno.listen или Deno.listenDatagram.

Свойства

path: string

Путь к сокету Unix.


интерфейс Deno.VsockAddr

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

Адрес сетевого подключения или прослушивающего сокета, использующего транспорт VSOCK для обмена данными между виртуальной машиной и ее хостом.

Свойства

transport: "vsock"

Транспортный протокол VSOCK.

cid: number

Идентификатор контекста (CID) узла-партнера.

port: number

Номер порта.


интерфейс Deno.VsockConn

расширяет Conn<VsockAddr>

Потоковое подключение VSOCK.


интерфейс Deno.VsockConnectOptions

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

Параметры подключения через VSOCK с помощью Deno.connect.

Свойства

transport: "vsock"

Транспортный протокол VSOCK.

cid: number

Идентификатор контекста (CID) узла-партнера, к которому нужно подключиться.

port: number

Порт, к которому нужно подключиться.


интерфейс Deno.VsockListenOptions

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

Параметры, которые можно задать при открытии прослушивающего сокета VSOCK с помощью Deno.listen.

Свойства

cid: number

Идентификатор контекста (CID), на котором нужно прослушивать подключения. Используйте -1, чтобы прослушивать подключения на любом CID.

port: number

Порт, на котором нужно прослушивать подключения.


псевдоним типа Deno.Addr

Адрес сетевого подключения или прослушивающего сокета независимо от используемого транспорта.

Определение

NetAddr
| UnixAddr
| VsockAddr

псевдоним типа Deno.RecordType

Тип ресурсной записи, которую нужно разрешить через DNS с помощью Deno.resolveDns.

В настоящее время поддерживаются только перечисленные типы.

Определение

"A"
| "AAAA"
| "ANAME"
| "CAA"
| "CNAME"
| "MX"
| "NAPTR"
| "NS"
| "PTR"
| "SOA"
| "SRV"
| "TXT"

псевдоним типа Deno.TcpListener

Специализированный прослушивающий сокет, принимающий TCP-подключения.

Определение

Listener<TcpConn, NetAddr>

псевдоним типа Deno.TlsListener

Специализированный прослушивающий сокет, принимающий TLS-подключения.

Определение

Listener<TlsConn, NetAddr>

псевдоним типа Deno.UnixListener

Специализированный прослушивающий сокет, принимающий подключения Unix.

Определение

Listener<UnixConn, UnixAddr>

псевдоним типа Deno.VsockListener

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

Специализированный прослушивающий сокет, принимающий подключения VSOCK.

Определение

Listener<VsockConn, VsockAddr>

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

Spec-Zone.ru

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