Сеть
Широкий спектр сетевых задач: от низкоуровневых подключений до создания высокоуровневых серверов. Обрабатывайте HTTP-запросы, взаимодействуйте по WebSocket и выполняйте разрешение DNS-имён. Полезно для создания веб-серверов, клиентов и сетевых инструментов.
Например, Deno.connect, Deno.listen, Deno.resolveDns
класс Deno.QuicEndpoint
Конструкторы
QuicEndpoint(options?: QuicEndpointOptions) Создаёт конечную точку QUIC, которую можно использовать для клиентских подключений или подключений к серверу.
Требуется разрешение allow-net.
Свойства
Методы
close(info?: QuicCloseInfo): void Закрывает конечную точку. Все связанные подключения будут закрыты, а входящие подключения будут отклонены.
listen(options: QuicListenOptions): QuicListener Функция listen объявляет адрес локального транспорта для QUIC.
функция Deno.connect
Вариант перегрузки 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
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> Возвращаемый тип
функция Deno.connectTls
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
Вариант перегрузки 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"; } Возвращаемый тип
Вариант перегрузки 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"; } Возвращаемый тип
Вариант перегрузки 3
listen(options: VsockListenOptions & { transport: "vsock"; }): VsockListenerФункция listen объявляет адрес локального транспорта.
Параметры
options: VsockListenOptions & { transport: "vsock"; } Возвращаемый тип
функция Deno.listenDatagram
Вариант перегрузки 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"; } Возвращаемый тип
Вариант перегрузки 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"; } Возвращаемый тип
функция Deno.listenTls
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 Возвращаемый тип
функция Deno.networkInterfaces
networkInterfaces(): NetworkInterfaceInfo[]Возвращает массив сведений о сетевых интерфейсах.
console.log(Deno.networkInterfaces());
Требуется разрешение allow-sys.
Возвращаемый тип
функция Deno.resolveDns
Перегрузка 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(): 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.
Параметры
Тип возвращаемого значения
Promise<CaaRecord[]> Перегрузка 3
resolveDns(): 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.
Параметры
Тип возвращаемого значения
Promise<MxRecord[]> Перегрузка 4
resolveDns(): 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.
Параметры
Тип возвращаемого значения
Promise<NaptrRecord[]> Перегрузка 5
resolveDns(): 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.
Параметры
Тип возвращаемого значения
Promise<SoaRecord[]> Перегрузка 6
resolveDns(): 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.
Параметры
Тип возвращаемого значения
Promise<SrvRecord[]> Перегрузка 7
resolveDns(): 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.
Параметры
Тип возвращаемого значения
Promise<string[][]> Перегрузка 8
resolveDns(): Promise<>Выполняет разрешение 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.
Параметры
Тип возвращаемого значения
Promise<> функция Deno.startTls
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
интерфейс Deno.CaaRecord
Если Deno.resolveDns вызывается с указанным типом записи "CAA", результатом будет массив объектов, реализующих этот интерфейс.
Свойства
critical: boolean Если true, это указывает, что соответствующий тег свойства должен быть понятен, чтобы издатель мог правильно интерпретировать семантику записи CAA.
Издатели не должны выдавать сертификаты для домена, если соответствующий набор записей ресурса CAA содержит неизвестные теги свойств, у которых установлено значение critical.
tag: string Строка, обозначающая идентификатор свойства, представленного записью.
value: string Значение, связанное с тегом.
интерфейс Deno.Conn
Универсальное потоковое сетевое соединение, предназначенное для чтения и записи данных.
Параметры типа
Свойства
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
Параметры типа
ZRTT extends boolean Свойства
port: number Порт для подключения.
hostname: string IP-адрес в буквенной записи или имя хоста, которое можно преобразовать в IP-адрес.
serverName: string | undefined Имя, используемое для проверки сертификата, предоставленного сервером. Если не указано, по умолчанию используется hostname.
alpnProtocols: string[] Поддерживаемые клиентом протоколы согласования протокола прикладного уровня (ALPN). Для QUIC необходимо использовать ALPN.
caCerts: string[] Список корневых сертификатов, которые будут использоваться вместе с корневыми сертификатами по умолчанию для проверки сертификата узла.
Должны быть в формате PEM.
endpoint: QuicEndpoint Если конечная точка не указана, новая конечная точка привязывается к эфемерному порту.
интерфейс 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
Универсальный транспортный прослушиватель для протоколов, ориентированных на сообщения.
Свойства
Методы
joinMulticastV4(
address: string,
networkInterface: string,
): Promise<MulticastV4Membership> Присоединяется к группе многоадресной рассылки IPv4.
joinMulticastV6(
address: string,
networkInterface: number,
): Promise<MulticastV6Membership> Присоединяется к группе многоадресной рассылки IPv6.
Ожидает следующее сообщение для экземпляра и разрешается с ним.
Сообщения принимаются в виде кортежа, содержащего массив данных и сведения об адресе.
Отправляет сообщение целевому узлу через соединение. Метод разрешается с количеством отправленных байтов.
close(): void Закрывает сокет. Все ожидающие промисы сообщений будут отклонены с ошибками.
[[Symbol.asyncIterator]](): AsyncIterableIterator<[Uint8Array<ArrayBuffer>, Addr]> интерфейс Deno.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
Параметры, которые можно задать при открытии 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", он возвращает массив объектов, реализующих этот интерфейс.
Свойства
интерфейс Deno.NetAddr
интерфейс Deno.NetworkInterfaceInfo
Информация о сетевом интерфейсе, возвращаемая вызовом Deno.networkInterfaces.
Свойства
интерфейс Deno.QuicAcceptOptions
Параметры типа
ZRTT extends boolean Свойства
alpnProtocols: string[] Протоколы согласования протокола прикладного уровня (ALPN), объявляемые клиенту. Для QUIC требуется использовать ALPN.
интерфейс Deno.QuicBidirectionalStream
Свойства
readable: QuicReceiveStream Возвращает экземпляр QuicReceiveStream, который можно использовать для чтения входящих данных.
writable: QuicSendStream Возвращает экземпляр QuicSendStream, который можно использовать для записи исходящих данных.
интерфейс Deno.QuicCloseInfo
интерфейс 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
интерфейс Deno.QuicIncoming
Входящее подключение, для которого сервер ещё не начал свою часть рукопожатия.
Свойства
localIp: string Локальный IP-адрес, который использовался узлом-партнёром при установлении подключения.
remoteAddr: NetAddr UDP-адрес узла-партнёра.
remoteAddressValidated: boolean Подтвердил ли сокетный адрес, инициирующий это подключение, возможность получать трафик.
Методы
интерфейс Deno.QuicListener
Специализированный прослушивающий сокет, принимающий подключения QUIC.
Свойства
endpoint: QuicEndpoint Конечная точка этого прослушивающего сокета.
Методы
incoming(): Promise<QuicIncoming> Ожидает следующее входящее подключение и возвращает его.
stop(): void Останавливает прослушивающий сокет. При этом конечная точка не закрывается.
[[Symbol.asyncIterator]](): AsyncIterableIterator<QuicIncoming> Перебирает входящие подключения, полученные прослушивающим сокетом.
интерфейс Deno.QuicListenOptions
Свойства
alpnProtocols: string[] Протоколы согласования протокола прикладного уровня (ALPN), объявляемые клиенту. Для QUIC требуется использовать ALPN.
key: string Закрытый ключ сервера в формате PEM
cert: string Цепочка сертификатов в формате PEM
интерфейс Deno.QuicReceiveStream
Свойства
id: bigint 62-разрядный идентификатор потока, уникальный в пределах этого соединения.
интерфейс Deno.QuicSendStreamOptions
Свойства
sendOrder: number = 0 Определяет приоритет отправки данных этого потока относительно других потоков, для которых задано это значение.
waitUntilAvailable: boolean = false Ожидать появления достаточного кредита управления потоком для создания потока.
интерфейс Deno.QuicServerTransportOptions
Свойства
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.SrvRecord
Если Deno.resolveDns вызвана с указанным типом записи "SRV", она вернет массив объектов, реализующих этот интерфейс.
Свойства
интерфейс 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
Потоковое соединение 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
Свойства
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" }
};
Свойства
интерфейс Deno.TlsConn
Зашифрованное с помощью TLS потоковое соединение через транспорт на основе IP.
Методы
handshake(): Promise<TlsHandshakeInfo> Выполняет до конца протокол рукопожатия клиента или сервера, если он еще не был выполнен. Вызов этого метода необязателен: рукопожатие TLS будет завершено автоматически при первой отправке или получении данных.
интерфейс Deno.TlsHandshakeInfo
Сведения о завершенном рукопожатии TLS.
Свойства
alpnProtocol: string | null Содержит протокол ALPN, выбранный при согласовании с сервером. Если протокол ALPN не выбран, возвращает null.
интерфейс Deno.UdpListenOptions
Нестабильные параметры, которые можно задать при открытии прослушивателя датаграмм с помощью Deno.listenDatagram.
Свойства
reuseAddress: boolean = false Если true, указанный адрес будет использоваться повторно, даже если другой процесс уже привязал к нему сокет. Фактически это позволяет перехватить сокет у прослушивателя.
loopback: boolean = false Если true, отправленные многоадресные пакеты будут возвращаться на локальный сокет.
интерфейс Deno.UnixAddr
интерфейс Deno.UnixConnectOptions
Параметры подключения к доменному сокету Unix с помощью Deno.connect.
Свойства
интерфейс Deno.UnixListenDatagramOptions
Нестабильные параметры, которые можно задать при открытии прослушивающего сокета дейтаграмм unixpacket с помощью Deno.listenDatagram.
Свойства
path: string Путь к сокету Unix. Если путь не указан, сокет остается непривязанным: его можно использовать для отправки сообщений, но не для их получения.
интерфейс Deno.UnixListenOptions
Параметры, которые можно задать при открытии прослушивающего сокета Unix с помощью Deno.listen или Deno.listenDatagram.
Свойства
path: string Путь к сокету Unix.
интерфейс Deno.VsockAddr
интерфейс Deno.VsockConnectOptions
Параметры подключения через VSOCK с помощью Deno.connect.
Свойства
интерфейс Deno.VsockListenOptions
Параметры, которые можно задать при открытии прослушивающего сокета VSOCK с помощью Deno.listen.
Свойства
псевдоним типа Deno.RecordType
Тип ресурсной записи, которую нужно разрешить через DNS с помощью Deno.resolveDns.
В настоящее время поддерживаются только перечисленные типы.
Определение
"A"
| "AAAA"
| "ANAME"
| "CAA"
| "CNAME"
| "MX"
| "NAPTR"
| "NS"
| "PTR"
| "SOA"
| "SRV"
| "TXT"
псевдоним типа Deno.TcpListener
псевдоним типа Deno.TlsListener
псевдоним типа Deno.UnixListener
псевдоним типа Deno.VsockListener
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/deno/network