http2
Модуль node:http2 предоставляет реализацию протокола HTTP/2. Его можно использовать следующим образом:
import http2 from 'node:http2';
Использование в Deno
import * as mod from "node:http2";
класс Http2ServerRequest
Использование в Deno
import { Http2ServerRequest } from "node:http2";
Объект Http2ServerRequest создаётся объектом Server или SecureServer и передаётся в качестве первого аргумента событию 'request'. Его можно использовать для доступа к состоянию запроса, заголовкам и данным.
Конструкторы
Http2ServerRequest(
stream: ServerHttp2Stream,
headers: IncomingHttpHeaders,
options: stream.ReadableOptions,
rawHeaders: readonly string[],
) Свойства
aborted: boolean Свойство request.aborted будет иметь значение true, если запрос был прерван.
authority: string Псевдополе заголовка authority запроса. Поскольку HTTP/2 позволяет задавать в запросах либо :authority, либо host, это значение определяется на основе req.headers[':authority'], если оно задано. В противном случае оно определяется на основе req.headers['host'].
complete: boolean Свойство request.complete будет иметь значение true, если запрос был завершён, прерван или уничтожен.
connection: net.Socket | tls.TLSSocket См. request.socket.
headers: IncomingHttpHeaders Объект заголовков запроса/ответа.
Пары «ключ—значение», содержащие имена и значения заголовков. Имена заголовков приводятся к нижнему регистру.
// Prints something like:
//
// { 'user-agent': 'curl/7.22.0',
// host: '127.0.0.1:8000',
// accept: '*' }
console.log(request.headers);
См. HTTP/2 Headers Object.
В HTTP/2 путь запроса, имя хоста, протокол и метод представлены специальными заголовками с префиксом в виде символа : (например, ':path'). Эти специальные заголовки включаются в объект request.headers. Необходимо следить за тем, чтобы случайно не изменять эти специальные заголовки, иначе могут возникнуть ошибки. Например, удаление всех заголовков запроса приведёт к ошибкам:
removeAllHeaders(request.headers);
assert(request.url); // Fails because the :path header has been removed
httpVersion: string Для запроса сервера — версия HTTP, отправленная клиентом. Для ответа клиента — версия HTTP подключённого сервера. Возвращает '2.0'.
Кроме того, message.httpVersionMajor — это первое целое число, а message.httpVersionMinor — второе.
httpVersionMajor: number httpVersionMinor: number method: string Метод запроса в виде строки. Только для чтения. Примеры: 'GET', 'DELETE'.
rawHeaders: string[] Список исходных заголовков запроса/ответа в точности в том виде, в каком они были получены.
Ключи и значения находятся в одном списке. Это не список кортежей. Таким образом, элементы с чётными индексами являются ключами, а элементы с нечётными индексами — соответствующими значениями.
Имена заголовков не приводятся к нижнему регистру, а дубликаты не объединяются.
// Prints something like:
//
// [ 'user-agent',
// 'this is invalid because there can be only one',
// 'User-Agent',
// 'curl/7.22.0',
// 'Host',
// '127.0.0.1:8000',
// 'ACCEPT',
// '*' ]
console.log(request.rawHeaders);
rawTrailers: string[] Исходные ключи и значения трейлеров запроса/ответа в точности в том виде, в каком они были получены. Заполняется только при событии 'end'.
scheme: string Псевдополе заголовка scheme запроса, указывающее часть целевого URL, содержащую схему.
socket: net.Socket | tls.TLSSocket Возвращает объект Proxy, который действует как net.Socket (или tls.TLSSocket), но применяет геттеры, сеттеры и методы с учётом логики HTTP/2.
Свойства destroyed, readable и writable считываются из request.stream и задаются для него.
Методы destroy, emit, end, on и once вызываются для request.stream.
Метод setTimeout вызывается для request.stream.session.
При обращении к pause, read, resume и write будет вызвана ошибка с кодом ERR_HTTP2_NO_SOCKET_MANIPULATION. Дополнительные сведения см. в разделе Http2Session and Sockets.
Все остальные операции напрямую перенаправляются сокету. При использовании TLS вызовите request.socket.getPeerCertificate(), чтобы получить данные аутентификации клиента.
stream: ServerHttp2Stream Объект Http2Stream, лежащий в основе запроса.
trailers: IncomingHttpHeaders Объект трейлеров запроса/ответа. Заполняется только при событии 'end'.
url: string Строка URL запроса. Она содержит только URL, указанный в фактическом HTTP-запросе. Если запрос имеет вид:
GET /status?name=ryan HTTP/1.1
Accept: text/plain
Тогда request.url будет иметь значение:
'/status?name=ryan'
Чтобы разобрать URL на составляющие, можно использовать new URL():
$ node
> new URL('/status?name=ryan', 'http://example.com')
URL {
href: 'http://example.com/status?name=ryan',
origin: 'http://example.com',
protocol: 'http:',
username: '',
password: '',
host: 'example.com',
hostname: 'example.com',
port: '',
pathname: '/status',
search: '?name=ryan',
searchParams: URLSearchParams { 'name' => 'ryan' },
hash: ''
}
Методы
addListener(
event: "aborted",
listener: (
hadError: boolean,
code: number,
) => void,
): this addListener(
event: "close",
listener: () => void,
): this addListener(
event: "data",
listener: (chunk: Buffer | string) => void,
): this addListener(
event: "end",
listener: () => void,
): this addListener(
event: "readable",
listener: () => void,
): this addListener(
event: "error",
listener: (err: Error) => void,
): this addListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this emit(
event: "aborted",
hadError: boolean,
code: number,
): boolean emit(event: "close"): boolean emit(
event: "data",
chunk: Buffer | string,
): boolean emit(event: "end"): boolean emit(event: "readable"): boolean emit(
event: "error",
err: Error,
): boolean emit(
event: string | symbol,
...args: any[],
): boolean on(
event: "aborted",
listener: (
hadError: boolean,
code: number,
) => void,
): this on(
event: "close",
listener: () => void,
): this on(
event: "data",
listener: (chunk: Buffer | string) => void,
): this on(
event: "end",
listener: () => void,
): this on(
event: "readable",
listener: () => void,
): this on(
event: "error",
listener: (err: Error) => void,
): this on(
event: string | symbol,
listener: (...args: any[]) => void,
): this once(
event: "aborted",
listener: (
hadError: boolean,
code: number,
) => void,
): this once(
event: "close",
listener: () => void,
): this once(
event: "data",
listener: (chunk: Buffer | string) => void,
): this once(
event: "end",
listener: () => void,
): this once(
event: "readable",
listener: () => void,
): this once(
event: "error",
listener: (err: Error) => void,
): this once(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependListener(
event: "aborted",
listener: (
hadError: boolean,
code: number,
) => void,
): this prependListener(
event: "close",
listener: () => void,
): this prependListener(
event: "data",
listener: (chunk: Buffer | string) => void,
): this prependListener(
event: "end",
listener: () => void,
): this prependListener(
event: "readable",
listener: () => void,
): this prependListener(
event: "error",
listener: (err: Error) => void,
): this prependListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependOnceListener(
event: "aborted",
listener: (
hadError: boolean,
code: number,
) => void,
): this prependOnceListener(
event: "close",
listener: () => void,
): this prependOnceListener(
event: "data",
listener: (chunk: Buffer | string) => void,
): this prependOnceListener(
event: "end",
listener: () => void,
): this prependOnceListener(
event: "readable",
listener: () => void,
): this prependOnceListener(
event: "error",
listener: (err: Error) => void,
): this prependOnceListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this read(size?: number):
Buffer
| string
| null
setTimeout(
msecs: number,
callback?: () => void,
): void Задаёт значение тайм-аута для Http2Stream равным msecs. Если указан callback, он добавляется в качестве обработчика события 'timeout' объекта ответа.
Если к запросу, ответу или серверу не добавлен обработчик события 'timeout', то Http2Stream уничтожаются по истечении тайм-аута. Если для событий 'timeout' запроса, ответа или сервера назначен обработчик, сокеты с истёкшим временем ожидания необходимо обрабатывать явно.
класс Http2ServerResponse
Использование в Deno
import { Http2ServerResponse } from "node:http2";
Этот объект создается внутренними средствами HTTP-сервера, а не пользователем. Он передается в качестве второго параметра событию 'request'.
Конструкторы
Http2ServerResponse(stream: ServerHttp2Stream) Параметры типа
Request extends Http2ServerRequest = Http2ServerRequest Свойства
connection: net.Socket | tls.TLSSocket См. response.socket.
finished: boolean Логическое значение, указывающее, завершена ли отправка ответа. Изначально имеет значение false. После выполнения response.end() значение станет true.
headersSent: boolean Значение true, если заголовки были отправлены, и false в противном случае (только для чтения).
sendDate: boolean Если имеет значение true, заголовок Date будет автоматически сформирован и отправлен в ответе, если он еще не присутствует в заголовках. По умолчанию — true.
Отключать это следует только при тестировании; протокол HTTP требует наличия заголовка Date в ответах.
socket: net.Socket | tls.TLSSocket Возвращает объект Proxy, который действует как net.Socket (или tls.TLSSocket), но применяет геттеры, сеттеры и методы в соответствии с логикой HTTP/2.
Свойства destroyed, readable и writable будут получены из response.stream и заданы для него.
Методы destroy, emit, end, on и once будут вызваны для response.stream.
Метод setTimeout будет вызван для response.stream.session.
Вызов pause, read, resume и write приведет к ошибке с кодом ERR_HTTP2_NO_SOCKET_MANIPULATION. Дополнительные сведения см. в Http2Session and Sockets.
Все остальные операции будут напрямую перенаправлены сокету.
import http2 from 'node:http2';
const server = http2.createServer((req, res) => {
const ip = req.socket.remoteAddress;
const port = req.socket.remotePort;
res.end(`Your IP address is ${ip} and your source port is ${port}.`);
}).listen(3000);
statusCode: number При использовании неявных заголовков (если явно не вызывается response.writeHead()) это свойство задает код состояния, который будет отправлен клиенту при сбросе заголовков.
response.statusCode = 404;
После отправки заголовков ответа клиенту это свойство указывает отправленный код состояния.
statusMessage: "" Сообщение о состоянии не поддерживается в HTTP/2 (RFC 7540 8.1.2.4). Возвращается пустая строка.
stream: ServerHttp2Stream Объект Http2Stream, лежащий в основе ответа.
Методы
addListener(
event: "close",
listener: () => void,
): this addListener(
event: "drain",
listener: () => void,
): this addListener(
event: "error",
listener: (error: Error) => void,
): this addListener(
event: "finish",
listener: () => void,
): this addListener(
event: "pipe",
listener: (src: stream.Readable) => void,
): this addListener(
event: "unpipe",
listener: (src: stream.Readable) => void,
): this addListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this addTrailers(trailers: OutgoingHttpHeaders): void Этот метод добавляет к ответу завершающие заголовки HTTP (заголовки, расположенные в конце сообщения).
Попытка задать имя или значение поля заголовка, содержащее недопустимые символы, приведет к возникновению исключения TypeError.
appendHeader(
name: string,
value: string | string[],
): void Добавляет одно значение заголовка в объект заголовков.
Если значение представляет собой массив, это равносильно многократному вызову данного метода.
Если для заголовка еще нет значений, это равносильно вызову setHeader.
Попытка задать имя или значение поля заголовка, содержащее недопустимые символы, приведет к возникновению исключения TypeError.
// Returns headers including "set-cookie: a" and "set-cookie: b"
const server = http2.createServer((req, res) => {
res.setHeader('set-cookie', 'a');
res.appendHeader('set-cookie', 'b');
res.writeHead(200);
res.end('ok');
});
createPushResponse(
headers: OutgoingHttpHeaders,
callback: (
err: Error | null,
res: Http2ServerResponse,
) => void,
): void Вызывает http2stream.pushStream() с заданными заголовками и в случае успеха передает указанный Http2Stream в качестве параметра обратного вызова для вновь созданного Http2ServerResponse. Если Http2ServerRequest закрывается, обратный вызов вызывается с ошибкой ERR_HTTP2_INVALID_STREAM.
emit(event: "close"): boolean emit(event: "drain"): boolean emit(
event: "error",
error: Error,
): boolean emit(event: "finish"): boolean emit(
event: "pipe",
src: stream.Readable,
): boolean emit(
event: "unpipe",
src: stream.Readable,
): boolean emit(
event: string | symbol,
...args: any[],
): boolean end(callback?: () => void): this Этот метод сообщает серверу, что все заголовки и тело ответа отправлены и сервер должен считать это сообщение завершенным. Метод response.end() ОБЯЗАТЕЛЬНО должен быть вызван для каждого ответа.
Если указан data, это равносильно вызову response.write(data, encoding), за которым следует response.end(callback).
Если указан callback, он будет вызван после завершения потока ответа.
end(
data: string | Uint8Array,
callback?: () => void,
): this end(
data: string | Uint8Array,
encoding: BufferEncoding,
callback?: () => void,
): this getHeader(name: string): string Читает заголовок, который уже поставлен в очередь, но еще не отправлен клиенту. Регистр символов в имени не учитывается.
const contentType = response.getHeader('content-type');
getHeaderNames(): string[] Возвращает массив, содержащий уникальные имена текущих исходящих заголовков. Все имена заголовков записаны строчными буквами.
response.setHeader('Foo', 'bar');
response.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']);
const headerNames = response.getHeaderNames();
// headerNames === ['foo', 'set-cookie']
Возвращает поверхностную копию текущих исходящих заголовков. Поскольку используется поверхностная копия, значения-массивы можно изменять без дополнительных вызовов различных методов модуля http, связанных с заголовками. Ключи возвращаемого объекта — имена заголовков, а значения — соответствующие значения заголовков. Все имена заголовков записаны строчными буквами.
Объект, возвращаемый методом response.getHeaders(), не наследует прототип от объекта JavaScript Object. Это означает, что стандартные методы Object, такие как obj.toString(), obj.hasOwnProperty() и другие, не определены и не будут работать.
response.setHeader('Foo', 'bar');
response.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']);
const headers = response.getHeaders();
// headers === { foo: 'bar', 'set-cookie': ['foo=bar', 'bar=baz'] }
hasHeader(name: string): boolean Возвращает true, если заголовок с именем name в данный момент задан среди исходящих заголовков. Регистр символов в имени заголовка не учитывается.
const hasContentType = response.hasHeader('content-type');
on(
event: "close",
listener: () => void,
): this on(
event: "drain",
listener: () => void,
): this on(
event: "error",
listener: (error: Error) => void,
): this on(
event: "finish",
listener: () => void,
): this on(
event: "pipe",
listener: (src: stream.Readable) => void,
): this on(
event: "unpipe",
listener: (src: stream.Readable) => void,
): this on(
event: string | symbol,
listener: (...args: any[]) => void,
): this once(
event: "close",
listener: () => void,
): this once(
event: "drain",
listener: () => void,
): this once(
event: "error",
listener: (error: Error) => void,
): this once(
event: "finish",
listener: () => void,
): this once(
event: "pipe",
listener: (src: stream.Readable) => void,
): this once(
event: "unpipe",
listener: (src: stream.Readable) => void,
): this once(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependListener(
event: "close",
listener: () => void,
): this prependListener(
event: "drain",
listener: () => void,
): this prependListener(
event: "error",
listener: (error: Error) => void,
): this prependListener(
event: "finish",
listener: () => void,
): this prependListener(
event: "pipe",
listener: (src: stream.Readable) => void,
): this prependListener(
event: "unpipe",
listener: (src: stream.Readable) => void,
): this prependListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependOnceListener(
event: "close",
listener: () => void,
): this prependOnceListener(
event: "drain",
listener: () => void,
): this prependOnceListener(
event: "error",
listener: (error: Error) => void,
): this prependOnceListener(
event: "finish",
listener: () => void,
): this prependOnceListener(
event: "pipe",
listener: (src: stream.Readable) => void,
): this prependOnceListener(
event: "unpipe",
listener: (src: stream.Readable) => void,
): this prependOnceListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this removeHeader(name: string): void Удаляет заголовок, поставленный в очередь для неявной отправки.
response.removeHeader('Content-Encoding');
setHeader(
name: string,
value:
number
| string
| readonly string[]
,
): void Задает одно значение заголовка для неявных заголовков. Если такой заголовок уже есть среди заголовков, предназначенных для отправки, его значение будет заменено. Чтобы отправить несколько заголовков с одинаковым именем, используйте массив строк.
response.setHeader('Content-Type', 'text/html; charset=utf-8');
или
response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']);
Попытка задать имя или значение поля заголовка, содержащее недопустимые символы, приведет к возникновению исключения TypeError.
Заголовки, заданные с помощью response.setHeader(), будут объединены с заголовками, переданными в response.writeHead(); при этом приоритет будет отдан заголовкам, переданным в response.writeHead().
// Returns content-type = text/plain
const server = http2.createServer((req, res) => {
res.setHeader('Content-Type', 'text/html; charset=utf-8');
res.setHeader('X-Foo', 'bar');
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('ok');
});
setTimeout(
msecs: number,
callback?: () => void,
): void Задает значение времени ожидания для Http2Stream — msecs. Если указан обратный вызов, он добавляется в качестве обработчика события 'timeout' объекта ответа.
Если для запроса, ответа или сервера не добавлен обработчик события 'timeout', то по истечении времени ожидания Http2Stream уничтожаются. Если для событий 'timeout' запроса, ответа или сервера назначен обработчик, необходимо самостоятельно обрабатывать сокеты, для которых истекло время ожидания.
write(
chunk: string | Uint8Array,
callback?: (err: Error) => void,
): boolean Если этот метод вызван, а response.writeHead() еще не вызывался, будет выполнен переход в режим неявных заголовков и сброс неявных заголовков.
Отправляет фрагмент тела ответа. Этот метод можно вызывать несколько раз для отправки последовательных частей тела.
В модуле node:http тело ответа не отправляется, если запрос является запросом HEAD. Аналогично, ответы 204 и 304 не должны содержать тело сообщения.
chunk может быть строкой или буфером. Если chunk является строкой, второй параметр определяет способ ее кодирования в поток байтов. По умолчанию encoding имеет значение 'utf8'. callback будет вызван, когда этот фрагмент данных будет сброшен.
Это необработанное тело HTTP, не связанное с кодированием составного тела более высокого уровня, которое может использоваться.
При первом вызове response.write() клиенту отправляются буферизованные заголовки и первый фрагмент тела. При втором вызове response.write() Node.js предполагает, что данные будут передаваться потоком, и отправляет новые данные отдельно. Иными словами, ответ буферизуется вплоть до первого фрагмента тела.
Возвращает true, если все данные успешно сброшены в буфер ядра. Возвращает false, если все данные или их часть помещены в очередь в памяти пользователя. Событие 'drain' будет сгенерировано, когда буфер снова освободится.
write(
chunk: string | Uint8Array,
encoding: BufferEncoding,
callback?: (err: Error) => void,
): boolean writeContinue(): void Отправляет клиенту статус 100 Continue, указывающий, что тело запроса следует отправить. См. событие 'checkContinue' в Http2Server и Http2SecureServer.
writeEarlyHints(hints: Record<string, string | string[]>): void Отправляет клиенту статус 103 Early Hints с заголовком Link, указывая, что пользовательский агент может предварительно загрузить связанные ресурсы или установить с ними предварительное соединение. hints — это объект, содержащий значения заголовков, отправляемых в сообщении с ранними подсказками.
Пример
const earlyHintsLink = '</styles.css>; rel=preload; as=style';
response.writeEarlyHints({
'link': earlyHintsLink,
});
const earlyHintsLinks = [
'</styles.css>; rel=preload; as=style',
'</scripts.js>; rel=preload; as=script',
];
response.writeEarlyHints({
'link': earlyHintsLinks,
});
writeHead(
statusCode: number,
headers?: OutgoingHttpHeaders,
): this Отправляет заголовок ответа на запрос. Код состояния — это трехзначный код состояния HTTP, например 404. Последний аргумент, headers, содержит заголовки ответа.
Возвращает ссылку на Http2ServerResponse, что позволяет объединять вызовы в цепочку.
Для совместимости с HTTP/1 в качестве второго аргумента можно передать удобочитаемое statusMessage. Однако, поскольку statusMessage не имеет значения в HTTP/2, аргумент не повлияет на результат, и будет выдано предупреждение процесса.
const body = 'hello world';
response.writeHead(200, {
'Content-Length': Buffer.byteLength(body),
'Content-Type': 'text/plain; charset=utf-8',
});
Content-Length задается в байтах, а не в символах. API Buffer.byteLength() можно использовать для определения количества байтов в заданной кодировке. В исходящих сообщениях Node.js не проверяет, совпадает ли Content-Length с длиной передаваемого тела. Однако при получении сообщений Node.js автоматически отклоняет сообщения, если Content-Length не соответствует фактическому размеру полезной нагрузки.
Этот метод можно вызвать для сообщения не более одного раза до вызова response.end().
Если response.write() или response.end() вызваны до этого метода, неявные/изменяемые заголовки будут вычислены и вызовут эту функцию.
Заголовки, заданные с помощью response.setHeader(), будут объединены с заголовками, переданными в response.writeHead(); при этом приоритет будет отдан заголовкам, переданным в response.writeHead().
// Returns content-type = text/plain
const server = http2.createServer((req, res) => {
res.setHeader('Content-Type', 'text/html; charset=utf-8');
res.setHeader('X-Foo', 'bar');
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('ok');
});
Попытка задать имя или значение поля заголовка, содержащее недопустимые символы, приведет к возникновению исключения TypeError.
writeHead(): this функция connect
Использование в Deno
import { connect } from "node:http2";
Перегрузка 1
connect(
authority: string | url.URL,
listener: (
session: ClientHttp2Session,
socket: net.Socket | tls.TLSSocket,
) => void,
): ClientHttp2SessionВозвращает экземпляр ClientHttp2Session.
import http2 from 'node:http2';
const client = http2.connect('https://localhost:1234');
// Use the client
client.close();
Параметры
authority: string | url.URL Удаленный сервер HTTP/2, к которому выполняется подключение. Параметр должен иметь вид минимального корректного URL с префиксом http:// или https://, именем хоста и IP-портом (если используется нестандартный порт). Данные пользователя (идентификатор пользователя и пароль), путь, строка запроса и фрагмент URL игнорируются.
listener: (
session: ClientHttp2Session,
socket: net.Socket | tls.TLSSocket,
) => void Будет зарегистрирован как однократный обработчик события 'connect'.
Тип возвращаемого значения
Перегрузка 2
connect(
authority: string | url.URL,
options?: ClientSessionOptions | SecureClientSessionOptions,
listener?: (
session: ClientHttp2Session,
socket: net.Socket | tls.TLSSocket,
) => void,
): ClientHttp2SessionПараметры
authority: string | url.URL options: ClientSessionOptions | SecureClientSessionOptions listener: (
session: ClientHttp2Session,
socket: net.Socket | tls.TLSSocket,
) => void Тип возвращаемого значения
функция createSecureServer
Использование в Deno
import { createSecureServer } from "node:http2";
Перегрузка 1
createSecureServer(onRequestHandler?: (
request: Http2ServerRequest,
response: Http2ServerResponse,
) => void): Http2SecureServerВозвращает экземпляр tls.Server, который создаёт экземпляры Http2Session и управляет ими.
import http2 from 'node:http2';
import fs from 'node:fs';
const options = {
key: fs.readFileSync('server-key.pem'),
cert: fs.readFileSync('server-cert.pem'),
};
// Create a secure HTTP/2 server
const server = http2.createSecureServer(options);
server.on('stream', (stream, headers) => {
stream.respond({
'content-type': 'text/html; charset=utf-8',
':status': 200,
});
stream.end('<h1>Hello World</h1>');
});
server.listen(8443);
Параметры
onRequestHandler: (
request: Http2ServerRequest,
response: Http2ServerResponse,
) => void См. Compatibility API
Возвращаемый тип
Перегрузка 2
createSecureServer<
Http1Request extends IncomingMessage = IncomingMessage,
Http1Response extends ServerResponse = ServerResponse,
Http2Request extends Http2ServerRequest = Http2ServerRequest,
Http2Response extends Http2ServerResponse = Http2ServerResponse,
>(
options: SecureServerOptions<Http1Request, Http1Response, Http2Request, Http2Response>,
onRequestHandler?: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): Http2SecureServer<Http1Request, Http1Response, Http2Request, Http2Response>Параметры типа
Http1Request extends IncomingMessage = IncomingMessage Http1Response extends ServerResponse = ServerResponse Http2Request extends Http2ServerRequest = Http2ServerRequest Http2Response extends Http2ServerResponse = Http2ServerResponse Параметры
onRequestHandler: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void Возвращаемый тип
функция createServer
Использование в Deno
import { createServer } from "node:http2";
Перегрузка 1
createServer(onRequestHandler?: (
request: Http2ServerRequest,
response: Http2ServerResponse,
) => void): Http2ServerВозвращает экземпляр net.Server, который создаёт экземпляры Http2Session и управляет ими.
Поскольку не известно ни одного браузера, поддерживающего HTTP/2 без шифрования, при обмене данными с клиентами-браузерами необходимо использовать createSecureServer.
import http2 from 'node:http2';
// Create an unencrypted HTTP/2 server.
// Since there are no browsers known that support
// unencrypted HTTP/2, the use of `http2.createSecureServer()`
// is necessary when communicating with browser clients.
const server = http2.createServer();
server.on('stream', (stream, headers) => {
stream.respond({
'content-type': 'text/html; charset=utf-8',
':status': 200,
});
stream.end('<h1>Hello World</h1>');
});
server.listen(8000);
Параметры
onRequestHandler: (
request: Http2ServerRequest,
response: Http2ServerResponse,
) => void См. Compatibility API
Возвращаемый тип
Перегрузка 2
createServer<
Http1Request extends IncomingMessage = IncomingMessage,
Http1Response extends ServerResponse = ServerResponse,
Http2Request extends Http2ServerRequest = Http2ServerRequest,
Http2Response extends Http2ServerResponse = Http2ServerResponse,
>(
options: ServerOptions<Http1Request, Http1Response, Http2Request, Http2Response>,
onRequestHandler?: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): Http2Server<Http1Request, Http1Response, Http2Request, Http2Response>Параметры типа
Http1Request extends IncomingMessage = IncomingMessage Http1Response extends ServerResponse = ServerResponse Http2Request extends Http2ServerRequest = Http2ServerRequest Http2Response extends Http2ServerResponse = Http2ServerResponse Параметры
options: ServerOptions<Http1Request, Http1Response, Http2Request, Http2Response> onRequestHandler: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void Возвращаемый тип
функция getDefaultSettings
Использование в Deno
import { getDefaultSettings } from "node:http2";
getDefaultSettings(): SettingsЭта функция является неработающей заглушкой.
Возвращает объект, содержащий настройки по умолчанию для экземпляра Http2Session. При каждом вызове этот метод возвращает новый экземпляр объекта, поэтому возвращённые экземпляры можно безопасно изменять для использования.
Возвращаемый тип
функция getPackedSettings
Использование в Deno
import { getPackedSettings } from "node:http2";
getPackedSettings(settings: Settings): BufferЭта функция является неработающей заглушкой.
Возвращает экземпляр Buffer, содержащий сериализованное представление заданных настроек HTTP/2, определённых в спецификации HTTP/2. Предназначен для использования с полем заголовка HTTP2-Settings.
import http2 from 'node:http2';
const packed = http2.getPackedSettings({ enablePush: false });
console.log(packed.toString('base64'));
// Prints: AAIAAAAA
Параметры
settings: Settings Возвращаемый тип
Buffer функция getUnpackedSettings
Использование в Deno
import { getUnpackedSettings } from "node:http2";
getUnpackedSettings(buf: Uint8Array): SettingsЭта функция является неработающей заглушкой.
Возвращает HTTP/2 Settings Object, содержащий десериализованные настройки из заданного Buffer, сформированного с помощью http2.getPackedSettings().
Параметры
buf: Uint8Array Упакованные настройки.
Возвращаемый тип
функция performServerHandshake
Использование в Deno
import { performServerHandshake } from "node:http2";
performServerHandshake<
Http1Request extends IncomingMessage = IncomingMessage,
Http1Response extends ServerResponse = ServerResponse,
Http2Request extends Http2ServerRequest = Http2ServerRequest,
Http2Response extends Http2ServerResponse = Http2ServerResponse,
>(
socket: stream.Duplex,
options?: ServerOptions<Http1Request, Http1Response, Http2Request, Http2Response>,
): ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>Создаёт сеанс сервера HTTP/2 на основе существующего сокета.
Параметры типа
Http1Request extends IncomingMessage = IncomingMessage Http1Response extends ServerResponse = ServerResponse Http2Request extends Http2ServerRequest = Http2ServerRequest Http2Response extends Http2ServerResponse = Http2ServerResponse Параметры
socket: stream.Duplex Дуплексный поток
options: ServerOptions<Http1Request, Http1Response, Http2Request, Http2Response> Можно указать любые параметры [createServer](/api/node/http2/.
Возвращаемый тип
интерфейс AlternativeServiceOptions
Использование в Deno
import { type AlternativeServiceOptions } from "node:http2";
Свойства
origin:
number
| string
| url.URL
интерфейс ClientHttp2Session
Использование в Deno
import { type ClientHttp2Session } from "node:http2";
Методы
request(
headers?: OutgoingHttpHeaders,
options?: ClientSessionRequestOptions,
): ClientHttp2Stream Только для экземпляров клиента HTTP/2 Http2Session метод http2session.request() создаёт и возвращает экземпляр Http2Stream, который можно использовать для отправки запроса HTTP/2 подключённому серверу.
При первом создании ClientHttp2Session сокет может быть ещё не подключён. Если в это время вызывается clienthttp2session.request(), фактический запрос будет отложен до готовности сокета. Если session будет закрыт до выполнения фактического запроса, возникнет ошибка ERR_HTTP2_GOAWAY_SESSION.
Этот метод доступен только в том случае, если http2session.type равно http2.constants.NGHTTP2_SESSION_CLIENT.
import http2 from 'node:http2';
const clientSession = http2.connect('https://localhost:1234');
const {
HTTP2_HEADER_PATH,
HTTP2_HEADER_STATUS,
} = http2.constants;
const req = clientSession.request({ [HTTP2_HEADER_PATH]: '/' });
req.on('response', (headers) => {
console.log(headers[HTTP2_HEADER_STATUS]);
req.on('data', (chunk) => { // .. });
req.on('end', () => { // .. });
});
Если задан параметр options.waitForTrailers, событие 'wantTrailers' возникает сразу после постановки в очередь последнего фрагмента отправляемых данных полезной нагрузки. После этого можно вызвать метод http2stream.sendTrailers(), чтобы отправить конечные заголовки узлу-получателю.
Если задан options.waitForTrailers, Http2Stream не будет автоматически закрыт после передачи последнего кадра DATA. Чтобы закрыть Http2Stream, пользовательский код должен вызвать либо http2stream.sendTrailers(), либо http2stream.close().
Если задан options.signal вместе с AbortSignal, а затем вызывается abort для соответствующего AbortController, запрос вызовет событие 'error' с ошибкой AbortError.
Псевдозаголовки :method и :path не указаны в headers; по умолчанию они соответственно равны:
-
:method='GET' -
:path=/
addListener(
event: "altsvc",
listener: (
alt: string,
origin: string,
stream: number,
) => void,
): this addListener(
event: "origin",
listener: (origins: string[]) => void,
): this addListener(
event: "connect",
listener: (
session: ClientHttp2Session,
socket: net.Socket | tls.TLSSocket,
) => void,
): this addListener(
event: "stream",
listener: () => void,
): this addListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this emit(
event: "altsvc",
alt: string,
origin: string,
stream: number,
): boolean emit(
event: "origin",
origins: readonly string[],
): boolean emit(): boolean emit(
event: "stream",
stream: ClientHttp2Stream,
headers: IncomingHttpHeaders & IncomingHttpStatusHeader,
flags: number,
): boolean emit(
event: string | symbol,
...args: any[],
): boolean on(
event: "altsvc",
listener: (
alt: string,
origin: string,
stream: number,
) => void,
): this on(
event: "origin",
listener: (origins: string[]) => void,
): this on(
event: "connect",
listener: (
session: ClientHttp2Session,
socket: net.Socket | tls.TLSSocket,
) => void,
): this on(
event: "stream",
listener: () => void,
): this on(
event: string | symbol,
listener: (...args: any[]) => void,
): this once(
event: "altsvc",
listener: (
alt: string,
origin: string,
stream: number,
) => void,
): this once(
event: "origin",
listener: (origins: string[]) => void,
): this once(
event: "connect",
listener: (
session: ClientHttp2Session,
socket: net.Socket | tls.TLSSocket,
) => void,
): this once(
event: "stream",
listener: () => void,
): this once(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependListener(
event: "altsvc",
listener: (
alt: string,
origin: string,
stream: number,
) => void,
): this prependListener(
event: "origin",
listener: (origins: string[]) => void,
): this prependListener(
event: "connect",
listener: (
session: ClientHttp2Session,
socket: net.Socket | tls.TLSSocket,
) => void,
): this prependListener(
event: "stream",
listener: () => void,
): this prependListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependOnceListener(
event: "altsvc",
listener: (
alt: string,
origin: string,
stream: number,
) => void,
): this prependOnceListener(
event: "origin",
listener: (origins: string[]) => void,
): this prependOnceListener(
event: "connect",
listener: (
session: ClientHttp2Session,
socket: net.Socket | tls.TLSSocket,
) => void,
): this prependOnceListener(
event: "stream",
listener: () => void,
): this prependOnceListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this интерфейс ClientHttp2Stream
Использование в Deno
import { type ClientHttp2Stream } from "node:http2";
Все методы являются неработающими заглушками.
Методы
addListener(
event: "continue",
listener: () => { },
): this addListener(
event: "headers",
listener: (
headers: IncomingHttpHeaders & IncomingHttpStatusHeader,
flags: number,
) => void,
): this addListener(
event: "push",
listener: (
headers: IncomingHttpHeaders,
flags: number,
) => void,
): this addListener(
event: "response",
listener: (
headers: IncomingHttpHeaders & IncomingHttpStatusHeader,
flags: number,
) => void,
): this addListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this emit(event: "continue"): boolean emit(): boolean emit(): boolean emit(): boolean emit(
event: string | symbol,
...args: any[],
): boolean on(
event: "continue",
listener: () => { },
): this on(
event: "headers",
listener: (
headers: IncomingHttpHeaders & IncomingHttpStatusHeader,
flags: number,
) => void,
): this on(
event: "push",
listener: (
headers: IncomingHttpHeaders,
flags: number,
) => void,
): this on(
event: "response",
listener: (
headers: IncomingHttpHeaders & IncomingHttpStatusHeader,
flags: number,
) => void,
): this on(
event: string | symbol,
listener: (...args: any[]) => void,
): this once(
event: "continue",
listener: () => { },
): this once(
event: "headers",
listener: (
headers: IncomingHttpHeaders & IncomingHttpStatusHeader,
flags: number,
) => void,
): this once(
event: "push",
listener: (
headers: IncomingHttpHeaders,
flags: number,
) => void,
): this once(
event: "response",
listener: (
headers: IncomingHttpHeaders & IncomingHttpStatusHeader,
flags: number,
) => void,
): this once(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependListener(
event: "continue",
listener: () => { },
): this prependListener(
event: "headers",
listener: (
headers: IncomingHttpHeaders & IncomingHttpStatusHeader,
flags: number,
) => void,
): this prependListener(
event: "push",
listener: (
headers: IncomingHttpHeaders,
flags: number,
) => void,
): this prependListener(
event: "response",
listener: (
headers: IncomingHttpHeaders & IncomingHttpStatusHeader,
flags: number,
) => void,
): this prependListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependOnceListener(
event: "continue",
listener: () => { },
): this prependOnceListener(
event: "headers",
listener: (
headers: IncomingHttpHeaders & IncomingHttpStatusHeader,
flags: number,
) => void,
): this prependOnceListener(
event: "push",
listener: (
headers: IncomingHttpHeaders,
flags: number,
) => void,
): this prependOnceListener(
event: "response",
listener: (
headers: IncomingHttpHeaders & IncomingHttpStatusHeader,
flags: number,
) => void,
): this prependOnceListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this интерфейс ClientSessionOptions
Использование в Deno
import { type ClientSessionOptions } from "node:http2";
Свойства
maxReservedRemoteStreams: number | undefined createConnection: ((
authority: url.URL,
option: SessionOptions,
) => stream.Duplex) | undefined protocol:
"http:"
| "https:"
| undefined
интерфейс ClientSessionRequestOptions
Использование в Deno
import { type ClientSessionRequestOptions } from "node:http2";
интерфейс Http2SecureServer
Использование в Deno
import { type Http2SecureServer } from "node:http2";
Параметры типа
Http1Request extends IncomingMessage = IncomingMessage Http1Response extends ServerResponse = ServerResponse Http2Request extends Http2ServerRequest = Http2ServerRequest Http2Response extends Http2ServerResponse = Http2ServerResponse Методы
addListener(
event: "checkContinue",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this addListener(
event: "request",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this addListener(
event: "session",
listener: (session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>) => void,
): this addListener(
event: "sessionError",
listener: (err: Error) => void,
): this addListener(
event: "stream",
listener: () => void,
): this addListener(
event: "timeout",
listener: () => void,
): this addListener(
event: "unknownProtocol",
listener: (socket: tls.TLSSocket) => void,
): this addListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this emit(): boolean emit(): boolean emit(
event: "session",
session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>,
): boolean emit(
event: "sessionError",
err: Error,
): boolean emit(): boolean emit(event: "timeout"): boolean emit(
event: "unknownProtocol",
socket: tls.TLSSocket,
): boolean emit(
event: string | symbol,
...args: any[],
): boolean on(
event: "checkContinue",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this on(
event: "request",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this on(
event: "session",
listener: (session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>) => void,
): this on(
event: "sessionError",
listener: (err: Error) => void,
): this on(
event: "stream",
listener: () => void,
): this on(
event: "timeout",
listener: () => void,
): this on(
event: "unknownProtocol",
listener: (socket: tls.TLSSocket) => void,
): this on(
event: string | symbol,
listener: (...args: any[]) => void,
): this once(
event: "checkContinue",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this once(
event: "request",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this once(
event: "session",
listener: (session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>) => void,
): this once(
event: "sessionError",
listener: (err: Error) => void,
): this once(
event: "stream",
listener: () => void,
): this once(
event: "timeout",
listener: () => void,
): this once(
event: "unknownProtocol",
listener: (socket: tls.TLSSocket) => void,
): this once(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependListener(
event: "checkContinue",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this prependListener(
event: "request",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this prependListener(
event: "session",
listener: (session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>) => void,
): this prependListener(
event: "sessionError",
listener: (err: Error) => void,
): this prependListener(
event: "stream",
listener: () => void,
): this prependListener(
event: "timeout",
listener: () => void,
): this prependListener(
event: "unknownProtocol",
listener: (socket: tls.TLSSocket) => void,
): this prependListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependOnceListener(
event: "checkContinue",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this prependOnceListener(
event: "request",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this prependOnceListener(
event: "session",
listener: (session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>) => void,
): this prependOnceListener(
event: "sessionError",
listener: (err: Error) => void,
): this prependOnceListener(
event: "stream",
listener: () => void,
): this prependOnceListener(
event: "timeout",
listener: () => void,
): this prependOnceListener(
event: "unknownProtocol",
listener: (socket: tls.TLSSocket) => void,
): this prependOnceListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this интерфейс Http2Server
Использование в Deno
import { type Http2Server } from "node:http2";
Параметры типа
Http1Request extends IncomingMessage = IncomingMessage Http1Response extends ServerResponse = ServerResponse Http2Request extends Http2ServerRequest = Http2ServerRequest Http2Response extends Http2ServerResponse = Http2ServerResponse Методы
addListener(
event: "checkContinue",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this addListener(
event: "request",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this addListener(
event: "session",
listener: (session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>) => void,
): this addListener(
event: "sessionError",
listener: (err: Error) => void,
): this addListener(
event: "stream",
listener: () => void,
): this addListener(
event: "timeout",
listener: () => void,
): this addListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this emit(): boolean emit(): boolean emit(
event: "session",
session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>,
): boolean emit(
event: "sessionError",
err: Error,
): boolean emit(): boolean emit(event: "timeout"): boolean emit(
event: string | symbol,
...args: any[],
): boolean on(
event: "checkContinue",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this on(
event: "request",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this on(
event: "session",
listener: (session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>) => void,
): this on(
event: "sessionError",
listener: (err: Error) => void,
): this on(
event: "stream",
listener: () => void,
): this on(
event: "timeout",
listener: () => void,
): this on(
event: string | symbol,
listener: (...args: any[]) => void,
): this once(
event: "checkContinue",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this once(
event: "request",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this once(
event: "session",
listener: (session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>) => void,
): this once(
event: "sessionError",
listener: (err: Error) => void,
): this once(
event: "stream",
listener: () => void,
): this once(
event: "timeout",
listener: () => void,
): this once(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependListener(
event: "checkContinue",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this prependListener(
event: "request",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this prependListener(
event: "session",
listener: (session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>) => void,
): this prependListener(
event: "sessionError",
listener: (err: Error) => void,
): this prependListener(
event: "stream",
listener: () => void,
): this prependListener(
event: "timeout",
listener: () => void,
): this prependListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependOnceListener(
event: "checkContinue",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this prependOnceListener(
event: "request",
listener: (
request: InstanceType<Http2Request>,
response: InstanceType<Http2Response>,
) => void,
): this prependOnceListener(
event: "session",
listener: (session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>) => void,
): this prependOnceListener(
event: "sessionError",
listener: (err: Error) => void,
): this prependOnceListener(
event: "stream",
listener: () => void,
): this prependOnceListener(
event: "timeout",
listener: () => void,
): this prependOnceListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this интерфейс HTTP2ServerCommon
Использование в Deno
import { type HTTP2ServerCommon } from "node:http2";
Методы
setTimeout(
msec?: number,
callback?: () => void,
): this updateSettings(settings: Settings): void Для недопустимых значений параметров выбрасывается ошибка ERR_HTTP2_INVALID_SETTING_VALUE. Для недопустимого аргумента settings выбрасывается ошибка ERR_INVALID_ARG_TYPE.
интерфейс Http2Session
Использование в Deno
import { type Http2Session } from "node:http2";
Следующие методы являются неработающими заглушками:
- setLocalWindowSize
- ping
- localSettings
- remoteSettings
- settings
- ref
- unref
Свойства
alpnProtocol: string | undefined Значение будет undefined, если Http2Session ещё не подключён к сокету, h2c, если Http2Session не подключён к TLSSocket, или будет возвращено значение собственного свойства alpnProtocol подключённого TLSSocket.
closed: boolean Будет true, если этот экземпляр Http2Session закрыт, в противном случае — false.
connecting: boolean Будет true, если этот экземпляр Http2Session всё ещё устанавливает соединение; значение будет установлено в false перед генерацией события connect и/или вызовом обратного вызова http2.connect.
destroyed: boolean Будет true, если этот экземпляр Http2Session уничтожен и больше не должен использоваться, в противном случае — false.
encrypted: boolean | undefined Значение равно undefined, если сокет сеанса Http2Session ещё не подключён, true, если Http2Session подключён с помощью TLSSocket, и false, если Http2Session подключён к сокету или потоку любого другого типа.
localSettings: Settings Объект без прототипа, описывающий текущие локальные настройки этого Http2Session. Локальные настройки относятся к этому экземпляру Http2Session.
originSet: string[] | undefined Если Http2Session подключён к TLSSocket, свойство originSet вернёт Array источников, для которых Http2Session можно считать авторитетным.
Свойство originSet доступно только при использовании защищённого соединения TLS.
pendingSettingsAck: boolean Указывает, ожидает ли Http2Session в данный момент подтверждения отправленного кадра SETTINGS. Будет true после вызова метода http2session.settings(). Будет false после подтверждения всех отправленных кадров SETTINGS.
remoteSettings: Settings Объект без прототипа, описывающий текущие удалённые настройки этогоHttp2Session. Удалённые настройки задаются подключённым узлом HTTP/2.
socket: net.Socket | tls.TLSSocket Возвращает объект Proxy, который действует как net.Socket (или tls.TLSSocket), но ограничивает доступные методы теми, которые безопасно использовать с HTTP/2.
Вызов destroy, emit, end, pause, read, resume и write приведёт к ошибке с кодом ERR_HTTP2_NO_SOCKET_MANIPULATION. Дополнительные сведения см. в Http2Session and Sockets.
Метод setTimeout будет вызван для этого Http2Session.
Все остальные взаимодействия будут напрямую перенаправлены сокету.
state: SessionState Предоставляет различные сведения о текущем состоянииHttp2Session.
Объект, описывающий текущее состояние этого Http2Session.
type: number Значение http2session.type будет равно http2.constants.NGHTTP2_SESSION_SERVER, если этот экземпляр Http2Session является сервером, и http2.constants.NGHTTP2_SESSION_CLIENT, если экземпляр является клиентом.
Методы
close(callback?: () => void): void Корректно закрывает Http2Session, позволяя всем существующим потокам завершиться самостоятельно и предотвращая создание новых экземпляров Http2Stream. После закрытия может быть вызван http2session.destroy(), если открытых экземпляров Http2Stream не осталось.
Если указана функция callback, она регистрируется как обработчик события 'close'.
destroy(
error?: Error,
code?: number,
): void Немедленно завершает Http2Session и связанный net.Socket или tls.TLSSocket.
После уничтожения Http2Session сгенерирует событие 'close'. Если error не равен undefined, непосредственно перед событием 'close' будет сгенерировано событие 'error'.
Все оставшиеся открытые объекты Http2Streams, связанные с Http2Session, также будут уничтожены.
goaway(
code?: number,
lastStreamID?: number,
opaqueData?: ArrayBufferView,
): void Отправляет подключённому узлу кадр GOAWAY, не завершая работуHttp2Session.
ping(callback: (
err: Error | null,
duration: number,
payload: Buffer,
) => void): boolean Отправляет кадр PING подключённому узлу HTTP/2. Необходимо предоставить функцию callback. Метод вернёт true, если PING был отправлен, и false в противном случае.
Максимальное количество ожидающих подтверждения проверочных сигналов определяется параметром конфигурации maxOutstandingPings. По умолчанию максимум равен 10.
Если параметр payload указан, он должен быть Buffer, TypedArray или DataView, содержащим 8 байт данных, которые будут переданы вместе с PING и возвращены вместе с подтверждением проверочного сигнала.
Функция обратного вызова будет вызвана с тремя аргументами: аргументом ошибки, равным null, если PING был успешно подтверждён; аргументом duration, содержащим количество миллисекунд, прошедших с момента отправки проверочного сигнала до получения подтверждения; и Buffer, содержащим 8-байтовую полезную нагрузку PING.
session.ping(Buffer.from('abcdefgh'), (err, duration, payload) => {
if (!err) {
console.log(`Ping acknowledged in ${duration} milliseconds`);
console.log(`With payload '${payload.toString()}'`);
}
});
Если аргумент payload не указан, полезной нагрузкой по умолчанию будет 64-битная временная метка (в порядке байтов от младшего к старшему), обозначающая начало интервала PING.
ping(
payload: ArrayBufferView,
callback: (
err: Error | null,
duration: number,
payload: Buffer,
) => void,
): boolean ref(): void Вызывает ref() для базового net.Socket этого экземпляра Http2Session.
setLocalWindowSize(windowSize: number): void Задаёт размер окна локальной конечной точки. windowSize — это общий размер окна, который нужно установить, а не приращение.
import http2 from 'node:http2';
const server = http2.createServer();
const expectedWindowSize = 2 ** 20;
server.on('connect', (session) => {
// Set local window size to be 2 ** 20
session.setLocalWindowSize(expectedWindowSize);
});
setTimeout(
msecs: number,
callback?: () => void,
): void Используется для задания функции обратного вызова, которая вызывается при отсутствии активности в Http2Session в течение msecs миллисекунд. Указанный callback регистрируется как обработчик события 'timeout'.
Обновляет текущие локальные настройки этого Http2Session и отправляет подключённому узлу HTTP/2 новый кадр SETTINGS.
После вызова свойство http2session.pendingSettingsAck будет иметь значение true, пока сеанс ожидает подтверждения новых настроек от удалённого узла.
Новые настройки вступят в силу только после получения подтверждения SETTINGS и генерации события 'localSettings'. Можно отправить несколько кадров SETTINGS, пока подтверждение ещё ожидается.
unref(): void Вызывает unref() для базового net.Socket этого экземпляра Http2Session.
addListener(
event: "close",
listener: () => void,
): this addListener(
event: "error",
listener: (err: Error) => void,
): this addListener(
event: "frameError",
listener: (
frameType: number,
errorCode: number,
streamID: number,
) => void,
): this addListener(
event: "goaway",
listener: (
errorCode: number,
lastStreamID: number,
opaqueData?: Buffer,
) => void,
): this addListener(
event: "localSettings",
listener: (settings: Settings) => void,
): this addListener(
event: "ping",
listener: () => void,
): this addListener(
event: "remoteSettings",
listener: (settings: Settings) => void,
): this addListener(
event: "timeout",
listener: () => void,
): this addListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this emit(event: "close"): boolean emit(
event: "error",
err: Error,
): boolean emit(
event: "frameError",
frameType: number,
errorCode: number,
streamID: number,
): boolean emit(
event: "goaway",
errorCode: number,
lastStreamID: number,
opaqueData?: Buffer,
): boolean emit(event: "ping"): boolean emit(event: "timeout"): boolean emit(
event: string | symbol,
...args: any[],
): boolean on(
event: "close",
listener: () => void,
): this on(
event: "error",
listener: (err: Error) => void,
): this on(
event: "frameError",
listener: (
frameType: number,
errorCode: number,
streamID: number,
) => void,
): this on(
event: "goaway",
listener: (
errorCode: number,
lastStreamID: number,
opaqueData?: Buffer,
) => void,
): this on(
event: "ping",
listener: () => void,
): this on(
event: "timeout",
listener: () => void,
): this on(
event: string | symbol,
listener: (...args: any[]) => void,
): this once(
event: "close",
listener: () => void,
): this once(
event: "error",
listener: (err: Error) => void,
): this once(
event: "frameError",
listener: (
frameType: number,
errorCode: number,
streamID: number,
) => void,
): this once(
event: "goaway",
listener: (
errorCode: number,
lastStreamID: number,
opaqueData?: Buffer,
) => void,
): this once(
event: "ping",
listener: () => void,
): this once(
event: "timeout",
listener: () => void,
): this once(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependListener(
event: "close",
listener: () => void,
): this prependListener(
event: "error",
listener: (err: Error) => void,
): this prependListener(
event: "frameError",
listener: (
frameType: number,
errorCode: number,
streamID: number,
) => void,
): this prependListener(
event: "goaway",
listener: (
errorCode: number,
lastStreamID: number,
opaqueData?: Buffer,
) => void,
): this prependListener(
event: "localSettings",
listener: (settings: Settings) => void,
): this prependListener(
event: "ping",
listener: () => void,
): this prependListener(
event: "remoteSettings",
listener: (settings: Settings) => void,
): this prependListener(
event: "timeout",
listener: () => void,
): this prependListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependOnceListener(
event: "close",
listener: () => void,
): this prependOnceListener(
event: "error",
listener: (err: Error) => void,
): this prependOnceListener(
event: "frameError",
listener: (
frameType: number,
errorCode: number,
streamID: number,
) => void,
): this prependOnceListener(
event: "goaway",
listener: (
errorCode: number,
lastStreamID: number,
opaqueData?: Buffer,
) => void,
): this prependOnceListener(
event: "localSettings",
listener: (settings: Settings) => void,
): this prependOnceListener(
event: "ping",
listener: () => void,
): this prependOnceListener(
event: "remoteSettings",
listener: (settings: Settings) => void,
): this prependOnceListener(
event: "timeout",
listener: () => void,
): this prependOnceListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this интерфейс Http2Stream
Использование в Deno
import { type Http2Stream } from "node:http2";
Следующие методы являются неработающими заглушками:
- aborted
- bufferSize
- endAfterHeaders
- id
- pending
- priority
- rstCode
- sentHeaders
- sentInfoHeaders
- sentTrailers
- state
Свойства
aborted: boolean Устанавливается в true, если экземпляр Http2Stream был аварийно прерван. После установки этого значения будет сгенерировано событие 'aborted'.
bufferSize: number Это свойство показывает количество символов, которые в данный момент буферизованы для записи. Подробности см. в net.Socket.bufferSize.
closed: boolean Устанавливается в true, если экземпляр Http2Stream был закрыт.
destroyed: boolean Устанавливается в true, если экземпляр Http2Stream был уничтожен и больше не пригоден к использованию.
endAfterHeaders: boolean Устанавливается в true, если флаг END_STREAM был установлен в полученном кадре HEADERS запроса или ответа, указывая, что больше не следует получать данные и читаемая сторона Http2Stream будет закрыта.
id: number | undefined Числовой идентификатор потока этого экземпляра Http2Stream. Устанавливается в undefined, если идентификатор потока еще не назначен.
pending: boolean Устанавливается в true, если экземпляру Http2Stream еще не назначен числовой идентификатор потока.
rstCode: number Устанавливается в значение RST_STREAM error code, сообщенное при уничтожении Http2Stream после получения кадра RST_STREAM от подключенного узла, вызова http2stream.close() или http2stream.destroy(). Будет равно undefined, если Http2Stream не был закрыт.
sentHeaders: OutgoingHttpHeaders Объект с исходящими заголовками, отправленными для этого Http2Stream.
sentInfoHeaders: OutgoingHttpHeaders[] | undefined Массив объектов с исходящими информационными (дополнительными) заголовками, отправленными для этого Http2Stream.
sentTrailers: OutgoingHttpHeaders | undefined Объект с исходящими завершающими заголовками, отправленными для этого HttpStream.
session: Http2Session | undefined Ссылка на экземпляр Http2Session, которому принадлежит этот Http2Stream. Значение будет равно undefined после уничтожения экземпляра Http2Stream.
state: StreamState Предоставляет различные сведения о текущем состоянии Http2Stream.
Текущее состояние этого Http2Stream.
Методы
close(
code?: number,
callback?: () => void,
): void Закрывает экземпляр Http2Stream, отправляя кадр RST_STREAM подключенному узлу HTTP/2.
priority(options: StreamPriorityOptions): void Обновляет приоритет этого экземпляра Http2Stream.
setTimeout(
msecs: number,
callback?: () => void,
): void import http2 from 'node:http2';
const client = http2.connect('http://example.org:8000');
const { NGHTTP2_CANCEL } = http2.constants;
const req = client.request({ ':path': '/' });
// Cancel the stream if there's no activity after 5 seconds
req.setTimeout(5000, () => req.close(NGHTTP2_CANCEL));
sendTrailers(headers: OutgoingHttpHeaders): void Отправляет завершающий кадр HEADERS подключенному узлу HTTP/2. Этот метод немедленно закрывает Http2Stream и должен вызываться только после генерации события 'wantTrailers'. При отправке запроса или ответа необходимо задать параметр options.waitForTrailers, чтобы оставить Http2Stream открытым после последнего кадра DATA и иметь возможность отправить завершающие заголовки.
import http2 from 'node:http2';
const server = http2.createServer();
server.on('stream', (stream) => {
stream.respond(undefined, { waitForTrailers: true });
stream.on('wantTrailers', () => {
stream.sendTrailers({ xyz: 'abc' });
});
stream.end('Hello World');
});
Спецификация HTTP/1 запрещает включать в завершающие заголовки псевдозаголовки HTTP/2 (например, ':method', ':path' и т. д.).
addListener(
event: "aborted",
listener: () => void,
): this addListener(
event: "close",
listener: () => void,
): this addListener(
event: "data",
listener: (chunk: Buffer | string) => void,
): this addListener(
event: "drain",
listener: () => void,
): this addListener(
event: "end",
listener: () => void,
): this addListener(
event: "error",
listener: (err: Error) => void,
): this addListener(
event: "finish",
listener: () => void,
): this addListener(
event: "frameError",
listener: (
frameType: number,
errorCode: number,
) => void,
): this addListener(
event: "pipe",
listener: (src: stream.Readable) => void,
): this addListener(
event: "unpipe",
listener: (src: stream.Readable) => void,
): this addListener(
event: "streamClosed",
listener: (code: number) => void,
): this addListener(
event: "timeout",
listener: () => void,
): this addListener(
event: "trailers",
listener: (
trailers: IncomingHttpHeaders,
flags: number,
) => void,
): this addListener(
event: "wantTrailers",
listener: () => void,
): this addListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this emit(event: "aborted"): boolean emit(event: "close"): boolean emit(
event: "data",
chunk: Buffer | string,
): boolean emit(event: "drain"): boolean emit(event: "end"): boolean emit(
event: "error",
err: Error,
): boolean emit(event: "finish"): boolean emit(
event: "frameError",
frameType: number,
errorCode: number,
): boolean emit(
event: "pipe",
src: stream.Readable,
): boolean emit(
event: "unpipe",
src: stream.Readable,
): boolean emit(
event: "streamClosed",
code: number,
): boolean emit(event: "timeout"): boolean emit(): boolean emit(event: "wantTrailers"): boolean emit(
event: string | symbol,
...args: any[],
): boolean on(
event: "aborted",
listener: () => void,
): this on(
event: "close",
listener: () => void,
): this on(
event: "data",
listener: (chunk: Buffer | string) => void,
): this on(
event: "drain",
listener: () => void,
): this on(
event: "end",
listener: () => void,
): this on(
event: "error",
listener: (err: Error) => void,
): this on(
event: "finish",
listener: () => void,
): this on(
event: "frameError",
listener: (
frameType: number,
errorCode: number,
) => void,
): this on(
event: "pipe",
listener: (src: stream.Readable) => void,
): this on(
event: "unpipe",
listener: (src: stream.Readable) => void,
): this on(
event: "streamClosed",
listener: (code: number) => void,
): this on(
event: "timeout",
listener: () => void,
): this on(
event: "trailers",
listener: (
trailers: IncomingHttpHeaders,
flags: number,
) => void,
): this on(
event: "wantTrailers",
listener: () => void,
): this on(
event: string | symbol,
listener: (...args: any[]) => void,
): this once(
event: "aborted",
listener: () => void,
): this once(
event: "close",
listener: () => void,
): this once(
event: "data",
listener: (chunk: Buffer | string) => void,
): this once(
event: "drain",
listener: () => void,
): this once(
event: "end",
listener: () => void,
): this once(
event: "error",
listener: (err: Error) => void,
): this once(
event: "finish",
listener: () => void,
): this once(
event: "frameError",
listener: (
frameType: number,
errorCode: number,
) => void,
): this once(
event: "pipe",
listener: (src: stream.Readable) => void,
): this once(
event: "unpipe",
listener: (src: stream.Readable) => void,
): this once(
event: "streamClosed",
listener: (code: number) => void,
): this once(
event: "timeout",
listener: () => void,
): this once(
event: "trailers",
listener: (
trailers: IncomingHttpHeaders,
flags: number,
) => void,
): this once(
event: "wantTrailers",
listener: () => void,
): this once(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependListener(
event: "aborted",
listener: () => void,
): this prependListener(
event: "close",
listener: () => void,
): this prependListener(
event: "data",
listener: (chunk: Buffer | string) => void,
): this prependListener(
event: "drain",
listener: () => void,
): this prependListener(
event: "end",
listener: () => void,
): this prependListener(
event: "error",
listener: (err: Error) => void,
): this prependListener(
event: "finish",
listener: () => void,
): this prependListener(
event: "frameError",
listener: (
frameType: number,
errorCode: number,
) => void,
): this prependListener(
event: "pipe",
listener: (src: stream.Readable) => void,
): this prependListener(
event: "unpipe",
listener: (src: stream.Readable) => void,
): this prependListener(
event: "streamClosed",
listener: (code: number) => void,
): this prependListener(
event: "timeout",
listener: () => void,
): this prependListener(
event: "trailers",
listener: (
trailers: IncomingHttpHeaders,
flags: number,
) => void,
): this prependListener(
event: "wantTrailers",
listener: () => void,
): this prependListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependOnceListener(
event: "aborted",
listener: () => void,
): this prependOnceListener(
event: "close",
listener: () => void,
): this prependOnceListener(
event: "data",
listener: (chunk: Buffer | string) => void,
): this prependOnceListener(
event: "drain",
listener: () => void,
): this prependOnceListener(
event: "end",
listener: () => void,
): this prependOnceListener(
event: "error",
listener: (err: Error) => void,
): this prependOnceListener(
event: "finish",
listener: () => void,
): this prependOnceListener(
event: "frameError",
listener: (
frameType: number,
errorCode: number,
) => void,
): this prependOnceListener(
event: "pipe",
listener: (src: stream.Readable) => void,
): this prependOnceListener(
event: "unpipe",
listener: (src: stream.Readable) => void,
): this prependOnceListener(
event: "streamClosed",
listener: (code: number) => void,
): this prependOnceListener(
event: "timeout",
listener: () => void,
): this prependOnceListener(
event: "trailers",
listener: (
trailers: IncomingHttpHeaders,
flags: number,
) => void,
): this prependOnceListener(
event: "wantTrailers",
listener: () => void,
): this prependOnceListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this интерфейс IncomingHttpHeaders
Использование в Deno
import { type IncomingHttpHeaders } from "node:http2";
Свойства
:path: string | undefined :method: string | undefined :authority: string | undefined :scheme: string | undefined интерфейс IncomingHttpStatusHeader
Использование в Deno
import { type IncomingHttpStatusHeader } from "node:http2";
Свойства
:status: number | undefined интерфейс OutgoingHttpHeaders
Использование в Deno
import { type OutgoingHttpHeaders } from "node:http2";
Свойства
accept:
string
| string[]
| undefined
accept-charset:
string
| string[]
| undefined
accept-encoding:
string
| string[]
| undefined
accept-language:
string
| string[]
| undefined
accept-ranges: string | undefined access-control-allow-credentials: string | undefined access-control-allow-headers: string | undefined access-control-allow-methods: string | undefined access-control-allow-origin: string | undefined access-control-expose-headers: string | undefined access-control-max-age: string | undefined access-control-request-headers: string | undefined access-control-request-method: string | undefined age: string | undefined allow: string | undefined authorization: string | undefined cache-control: string | undefined cdn-cache-control: string | undefined connection:
string
| string[]
| undefined
content-disposition: string | undefined content-encoding: string | undefined content-language: string | undefined content-length:
string
| number
| undefined
content-location: string | undefined content-range: string | undefined content-security-policy: string | undefined content-security-policy-report-only: string | undefined content-type: string | undefined cookie:
string
| string[]
| undefined
dav:
string
| string[]
| undefined
dnt: string | undefined date: string | undefined etag: string | undefined expect: string | undefined expires: string | undefined forwarded: string | undefined from: string | undefined host: string | undefined if-match: string | undefined if-modified-since: string | undefined if-none-match: string | undefined if-range: string | undefined if-unmodified-since: string | undefined last-modified: string | undefined link:
string
| string[]
| undefined
location: string | undefined max-forwards: string | undefined origin: string | undefined pragma:
string
| string[]
| undefined
proxy-authenticate:
string
| string[]
| undefined
proxy-authorization: string | undefined public-key-pins: string | undefined public-key-pins-report-only: string | undefined range: string | undefined referer: string | undefined referrer-policy: string | undefined refresh: string | undefined retry-after: string | undefined sec-websocket-accept: string | undefined sec-websocket-extensions:
string
| string[]
| undefined
sec-websocket-key: string | undefined sec-websocket-protocol:
string
| string[]
| undefined
sec-websocket-version: string | undefined server: string | undefined set-cookie:
string
| string[]
| undefined
strict-transport-security: string | undefined te: string | undefined trailer: string | undefined transfer-encoding: string | undefined user-agent: string | undefined upgrade: string | undefined upgrade-insecure-requests: string | undefined vary: string | undefined via:
string
| string[]
| undefined
warning: string | undefined www-authenticate:
string
| string[]
| undefined
x-content-type-options: string | undefined x-dns-prefetch-control: string | undefined x-frame-options: string | undefined x-xss-protection: string | undefined интерфейс SecureClientSessionOptions
Использование в Deno
import { type SecureClientSessionOptions } from "node:http2";
интерфейс SecureServerOptions
Использование в Deno
import { type SecureServerOptions } from "node:http2";
Параметры типов
Http1Request extends IncomingMessage = IncomingMessage Http1Response extends ServerResponse = ServerResponse Http2Request extends Http2ServerRequest = Http2ServerRequest Http2Response extends Http2ServerResponse = Http2ServerResponse Свойства
allowHTTP1: boolean | undefined origins: string[] | undefined интерфейс SecureServerSessionOptions
Использование в Deno
import { type SecureServerSessionOptions } from "node:http2";
Параметры типа
Http1Request extends IncomingMessage = IncomingMessage Http1Response extends ServerResponse = ServerResponse Http2Request extends Http2ServerRequest = Http2ServerRequest Http2Response extends Http2ServerResponse = Http2ServerResponse интерфейс ServerHttp2Session
Использование в Deno
import { type ServerHttp2Session } from "node:http2";
Все методы являются неработающими заглушками.
Параметры типа
Http1Request extends IncomingMessage = IncomingMessage Http1Response extends ServerResponse = ServerResponse Http2Request extends Http2ServerRequest = Http2ServerRequest Http2Response extends Http2ServerResponse = Http2ServerResponse Свойства
server: Http2Server<Http1Request, Http1Response, Http2Request, Http2Response> | Http2SecureServer<Http1Request, Http1Response, Http2Request, Http2Response> Методы
altsvc(
alt: string,
originOrStream: ,
): void Отправляет подключенному клиенту кадр ALTSVC (как определено в RFC 7838).
import http2 from 'node:http2';
const server = http2.createServer();
server.on('session', (session) => {
// Set altsvc for origin https://example.org:80
session.altsvc('h2=":8000"', 'https://example.org:80');
});
server.on('stream', (stream) => {
// Set altsvc for a specific stream
stream.session.altsvc('h2=":8000"', stream.id);
});
Отправка кадра ALTSVC с определенным идентификатором потока указывает, что альтернативная служба связана с источником указанного Http2Stream.
Значение alt и строка источника должны содержать только байты ASCII и строго интерпретируются как последовательность байтов ASCII. Специальное значение 'clear'можно передать, чтобы очистить любую ранее заданную альтернативную службу для указанного домена.
Если для аргумента originOrStream передана строка, она будет разобрана как URL, и источник будет получен из нее. Например, источником для HTTP URL 'https://example.org/foo/bar' является строка ASCII'https://example.org'. Будет выброшена ошибка, если указанную строку невозможно разобрать как URL или если не удается получить допустимый источник.
В качестве originOrStream можно передать объект URL или любой объект со свойством origin; в этом случае будет использовано значение свойства origin. Значение свойства origin должно быть правильно сериализованным источником ASCII.
origin(...origins: Array<
string
| url.URL
| { origin: string; }
>): void Отправляет подключенному клиенту кадр ORIGIN (как определено в RFC 8336), чтобы сообщить набор источников, для которых сервер может предоставлять авторитетные ответы.
import http2 from 'node:http2';
const options = getSecureOptionsSomehow();
const server = http2.createSecureServer(options);
server.on('stream', (stream) => {
stream.respond();
stream.end('ok');
});
server.on('session', (session) => {
session.origin('https://example.com', 'https://example.org');
});
Если в качестве origin передана строка, она будет разобрана как URL, и источник будет получен из нее. Например, источником для HTTP URL 'https://example.org/foo/bar' является строка ASCII 'https://example.org'. Будет выброшена ошибка, если указанную строку невозможно разобрать как URL или если не удается получить допустимый источник.
В качестве origin можно передать объект URL или любой объект со свойством origin; в этом случае будет использовано значение свойства origin. Значение свойства origin должно быть правильно сериализованным источником ASCII.
Кроме того, параметр origins можно использовать при создании нового HTTP/2-сервера с помощью метода http2.createSecureServer():
import http2 from 'node:http2';
const options = getSecureOptionsSomehow();
options.origins = ['https://example.com', 'https://example.org'];
const server = http2.createSecureServer(options);
server.on('stream', (stream) => {
stream.respond();
stream.end('ok');
});
addListener(
event: "connect",
listener: (
session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>,
socket: net.Socket | tls.TLSSocket,
) => void,
): this addListener(
event: "stream",
listener: () => void,
): this addListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this emit(
event: "connect",
session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>,
socket: net.Socket | tls.TLSSocket,
): boolean emit(): boolean emit(
event: string | symbol,
...args: any[],
): boolean on(
event: "connect",
listener: (
session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>,
socket: net.Socket | tls.TLSSocket,
) => void,
): this on(
event: "stream",
listener: () => void,
): this on(
event: string | symbol,
listener: (...args: any[]) => void,
): this once(
event: "connect",
listener: (
session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>,
socket: net.Socket | tls.TLSSocket,
) => void,
): this once(
event: "stream",
listener: () => void,
): this once(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependListener(
event: "connect",
listener: (
session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>,
socket: net.Socket | tls.TLSSocket,
) => void,
): this prependListener(
event: "stream",
listener: () => void,
): this prependListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this prependOnceListener(
event: "connect",
listener: (
session: ServerHttp2Session<Http1Request, Http1Response, Http2Request, Http2Response>,
socket: net.Socket | tls.TLSSocket,
) => void,
): this prependOnceListener(
event: "stream",
listener: () => void,
): this prependOnceListener(
event: string | symbol,
listener: (...args: any[]) => void,
): this интерфейс ServerHttp2Stream
Использование в Deno
import { type ServerHttp2Stream } from "node:http2";
Свойства
headersSent: boolean True, если заголовки были отправлены, иначе false (только для чтения).
pushAllowed: boolean Свойство только для чтения, соответствующее флагу SETTINGS_ENABLE_PUSH последнего кадра SETTINGS, полученного от удаленного клиента. Значение будет true, если удаленный узел принимает потоки push, и false в противном случае. Настройки одинаковы для каждого Http2Stream в одном и том же Http2Session.
Методы
additionalHeaders(headers: OutgoingHttpHeaders): void Отправляет подключенному узлу HTTP/2 дополнительный информационный кадр HEADERS.
pushStream(
headers: OutgoingHttpHeaders,
callback?: () => void,
): void Инициирует поток push. Функция обратного вызова вызывается с новым экземпляром Http2Stream, созданным для потока push и переданным в качестве второго аргумента, либо с Error, переданным в качестве первого аргумента.
import http2 from 'node:http2';
const server = http2.createServer();
server.on('stream', (stream) => {
stream.respond({ ':status': 200 });
stream.pushStream({ ':path': '/' }, (err, pushStream, headers) => {
if (err) throw err;
pushStream.respond({ ':status': 200 });
pushStream.end('some pushed data');
});
stream.end('some data');
});
Устанавливать вес потока push в кадре HEADERS нельзя. Передайте значение weight в http2stream.priority с параметром silent, установленным в true, чтобы включить балансировку пропускной способности на стороне сервера между параллельными потоками.
Вызов http2stream.pushStream() изнутри потока push запрещен и приведет к ошибке.
pushStream(): void respond(
headers?: OutgoingHttpHeaders,
options?: ServerStreamResponseOptions,
): void import http2 from 'node:http2';
const server = http2.createServer();
server.on('stream', (stream) => {
stream.respond({ ':status': 200 });
stream.end('some data');
});
Инициирует ответ. Если задан параметр options.waitForTrailers, событие 'wantTrailers' будет создано сразу после постановки в очередь последнего фрагмента отправляемых данных полезной нагрузки. Затем для отправки завершающих полей заголовка узлу можно использовать метод http2stream.sendTrailers().
Если задан параметр options.waitForTrailers, Http2Stream не будет автоматически закрыт после передачи последнего кадра DATA. Пользовательский код должен вызвать http2stream.sendTrailers() или http2stream.close(), чтобы закрыть Http2Stream.
import http2 from 'node:http2';
const server = http2.createServer();
server.on('stream', (stream) => {
stream.respond({ ':status': 200 }, { waitForTrailers: true });
stream.on('wantTrailers', () => {
stream.sendTrailers({ ABC: 'some value to send' });
});
stream.end('some data');
});
respondWithFD(
fd: number | fs.promises.FileHandle,
headers?: OutgoingHttpHeaders,
options?: ServerStreamFileResponseOptions,
): void Инициирует ответ, данные для которого считываются из указанного дескриптора файла. Проверка указанного дескриптора файла не выполняется. Если при попытке считывания данных с помощью дескриптора файла возникает ошибка, Http2Stream будет закрыт с помощью кадра RST_STREAM и стандартного кода INTERNAL_ERROR.
При использовании интерфейс Duplex объекта Http2Stream будет закрыт автоматически.
import http2 from 'node:http2';
import fs from 'node:fs';
const server = http2.createServer();
server.on('stream', (stream) => {
const fd = fs.openSync('/some/file', 'r');
const stat = fs.fstatSync(fd);
const headers = {
'content-length': stat.size,
'last-modified': stat.mtime.toUTCString(),
'content-type': 'text/plain; charset=utf-8',
};
stream.respondWithFD(fd, headers);
stream.on('close', () => fs.closeSync(fd));
});
Можно указать необязательную функцию options.statCheck, чтобы пользовательский код мог задать дополнительные заголовки содержимого на основе сведений fs.Stat указанного fd. Если функция statCheck задана, метод http2stream.respondWithFD() выполнит вызов fs.fstat() для сбора сведений об указанном дескрипторе файла.
Параметры offset и length можно использовать, чтобы ограничить ответ определенным диапазоном. Это можно использовать, например, для поддержки HTTP-запросов Range.
Дескриптор файла или FileHandle не закрывается при закрытии потока, поэтому его необходимо закрыть вручную, когда он больше не нужен. Одновременное использование одного дескриптора файла для нескольких потоков не поддерживается и может привести к потере данных. Повторное использование дескриптора файла после завершения потока поддерживается.
Если задан параметр options.waitForTrailers, событие 'wantTrailers' будет создано сразу после постановки в очередь последнего фрагмента отправляемых данных полезной нагрузки. Затем для отправки завершающих полей заголовка узлу можно использовать метод http2stream.sendTrailers().
Если задан параметр options.waitForTrailers, Http2Stream не будет автоматически закрыт после передачи последнего кадра DATA. Пользовательский код должен вызвать http2stream.sendTrailers() или http2stream.close(), чтобы закрыть Http2Stream.
import http2 from 'node:http2';
import fs from 'node:fs';
const server = http2.createServer();
server.on('stream', (stream) => {
const fd = fs.openSync('/some/file', 'r');
const stat = fs.fstatSync(fd);
const headers = {
'content-length': stat.size,
'last-modified': stat.mtime.toUTCString(),
'content-type': 'text/plain; charset=utf-8',
};
stream.respondWithFD(fd, headers, { waitForTrailers: true });
stream.on('wantTrailers', () => {
stream.sendTrailers({ ABC: 'some value to send' });
});
stream.on('close', () => fs.closeSync(fd));
});
respondWithFile(): void Отправляет обычный файл в качестве ответа. path должен указывать на обычный файл, иначе в объекте Http2Stream будет создано событие 'error'.
При использовании интерфейс Duplex объекта Http2Stream будет закрыт автоматически.
Можно указать необязательную функцию options.statCheck, чтобы пользовательский код мог задать дополнительные заголовки содержимого на основе сведений fs.Stat указанного файла:
Если при попытке чтения данных файла возникает ошибка, Http2Stream будет закрыт с помощью кадра RST_STREAM и стандартного кода INTERNAL_ERROR. Если определена функция обратного вызова onError, она будет вызвана. В противном случае поток будет уничтожен.
Пример с использованием пути к файлу:
import http2 from 'node:http2';
const server = http2.createServer();
server.on('stream', (stream) => {
function statCheck(stat, headers) {
headers['last-modified'] = stat.mtime.toUTCString();
}
function onError(err) {
// stream.respond() can throw if the stream has been destroyed by
// the other side.
try {
if (err.code === 'ENOENT') {
stream.respond({ ':status': 404 });
} else {
stream.respond({ ':status': 500 });
}
} catch (err) {
// Perform actual error handling.
console.error(err);
}
stream.end();
}
stream.respondWithFile('/some/file',
{ 'content-type': 'text/plain; charset=utf-8' },
{ statCheck, onError });
});
Функцию options.statCheck также можно использовать для отмены операции отправки, вернув false. Например, условный запрос может проверить результаты stat, чтобы определить, был ли изменен файл, и вернуть соответствующий ответ 304:
import http2 from 'node:http2';
const server = http2.createServer();
server.on('stream', (stream) => {
function statCheck(stat, headers) {
// Check the stat here...
stream.respond({ ':status': 304 });
return false; // Cancel the send operation
}
stream.respondWithFile('/some/file',
{ 'content-type': 'text/plain; charset=utf-8' },
{ statCheck });
});
Поле заголовка content-length будет задано автоматически.
Параметры offset и length можно использовать, чтобы ограничить ответ определенным диапазоном. Это можно использовать, например, для поддержки HTTP-запросов Range.
Функцию options.onError также можно использовать для обработки всех ошибок, которые могут возникнуть до начала передачи файла. По умолчанию поток уничтожается.
Если задан параметр options.waitForTrailers, событие 'wantTrailers' будет создано сразу после постановки в очередь последнего фрагмента отправляемых данных полезной нагрузки. Затем для отправки завершающих полей заголовка узлу можно использовать метод http2stream.sendTrailers().
Если задан параметр options.waitForTrailers, Http2Stream не будет автоматически закрыт после передачи последнего кадра DATA. Пользовательский код должен вызвать http2stream.sendTrailers() или http2stream.close(), чтобы закрыть Http2Stream.
import http2 from 'node:http2';
const server = http2.createServer();
server.on('stream', (stream) => {
stream.respondWithFile('/some/file',
{ 'content-type': 'text/plain; charset=utf-8' },
{ waitForTrailers: true });
stream.on('wantTrailers', () => {
stream.sendTrailers({ ABC: 'some value to send' });
});
});
интерфейс ServerOptions
Использование в Deno
import { type ServerOptions } from "node:http2";
Параметры типа
Http1Request extends IncomingMessage = IncomingMessage Http1Response extends ServerResponse = ServerResponse Http2Request extends Http2ServerRequest = Http2ServerRequest Http2Response extends Http2ServerResponse = Http2ServerResponse Свойства
streamResetBurst: number | undefined streamResetRate: number | undefined интерфейс ServerSessionOptions
Использование в Deno
import { type ServerSessionOptions } from "node:http2";
Параметры типа
Http1Request extends IncomingMessage = IncomingMessage Http1Response extends ServerResponse = ServerResponse Http2Request extends Http2ServerRequest = Http2ServerRequest Http2Response extends Http2ServerResponse = Http2ServerResponse Свойства
Http1IncomingMessage: Http1Request | undefined Http1ServerResponse: Http1Response | undefined Http2ServerRequest: Http2Request | undefined Http2ServerResponse: Http2Response | undefined интерфейс ServerStreamFileResponseOptions
Использование в Deno
import { type ServerStreamFileResponseOptions } from "node:http2";
Свойства
waitForTrailers: boolean | undefined offset: number | undefined length: number | undefined Методы
statCheck(): void | boolean интерфейс ServerStreamFileResponseOptionsWithError
Использование в Deno
import { type ServerStreamFileResponseOptionsWithError } from "node:http2";
Методы
onError(err: ErrnoException): void интерфейс ServerStreamResponseOptions
Использование в Deno
import { type ServerStreamResponseOptions } from "node:http2";
Свойства
endStream: boolean | undefined waitForTrailers: boolean | undefined интерфейс SessionOptions
Использование в Deno
import { type SessionOptions } from "node:http2";
Свойства
maxDeflateDynamicTableSize: number | undefined maxSessionMemory: number | undefined maxHeaderListPairs: number | undefined maxOutstandingPings: number | undefined maxSendHeaderBlockLength: number | undefined paddingStrategy: number | undefined peerMaxConcurrentStreams: number | undefined remoteCustomSettings: number[] | undefined unknownProtocolTimeout: number | undefined Задает время ожидания в миллисекундах, в течение которого сервер должен ожидать отправки ['unknownProtocol'][]. Если к этому моменту сокет не был уничтожен, сервер уничтожит его.
Методы
selectPadding(
frameLen: number,
maxFrameLen: number,
): number интерфейс SessionState
Использование в Deno
import { type SessionState } from "node:http2";
Свойства
effectiveLocalWindowSize: number | undefined effectiveRecvDataLength: number | undefined nextStreamID: number | undefined localWindowSize: number | undefined lastProcStreamID: number | undefined remoteWindowSize: number | undefined outboundQueueSize: number | undefined deflateDynamicTableSize: number | undefined inflateDynamicTableSize: number | undefined интерфейс Settings
Использование в Deno
import { type Settings } from "node:http2";
Свойства
headerTableSize: number | undefined enablePush: boolean | undefined initialWindowSize: number | undefined maxFrameSize: number | undefined maxConcurrentStreams: number | undefined maxHeaderListSize: number | undefined enableConnectProtocol: boolean | undefined интерфейс StatOptions
Использование в Deno
import { type StatOptions } from "node:http2";
интерфейс StreamPriorityOptions
Использование в Deno
import { type StreamPriorityOptions } from "node:http2";
интерфейс StreamState
Использование в Deno
import { type StreamState } from "node:http2";
Свойства
localWindowSize: number | undefined state: number | undefined localClose: number | undefined remoteClose: number | undefined sumDependencyWeight: number | undefined weight: number | undefined переменная constants.DEFAULT_SETTINGS_ENABLE_PUSH
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.DEFAULT_SETTINGS_HEADER_TABLE_SIZE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.DEFAULT_SETTINGS_MAX_FRAME_SIZE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP2_HEADER_ACCEPT
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ACCEPT_CHARSET
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ACCEPT_ENCODING
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ACCEPT_LANGUAGE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ACCEPT_RANGES
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ACCESS_CONTROL_ALLOW_CREDENTIALS
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ACCESS_CONTROL_ALLOW_HEADERS
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ACCESS_CONTROL_ALLOW_METHODS
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ACCESS_CONTROL_EXPOSE_HEADERS
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ACCESS_CONTROL_REQUEST_HEADERS
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ACCESS_CONTROL_REQUEST_METHOD
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_AGE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ALLOW
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_AUTHORITY
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_AUTHORIZATION
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_CACHE_CONTROL
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_CONNECTION
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_CONTENT_DISPOSITION
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_CONTENT_ENCODING
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_CONTENT_LANGUAGE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_CONTENT_LENGTH
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_CONTENT_LOCATION
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_CONTENT_MD5
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_CONTENT_RANGE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_CONTENT_TYPE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_COOKIE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_DATE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_ETAG
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_EXPECT
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_EXPIRES
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_FROM
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_HOST
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_HTTP2_SETTINGS
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_IF_MATCH
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_IF_MODIFIED_SINCE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_IF_NONE_MATCH
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_IF_RANGE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_IF_UNMODIFIED_SINCE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_KEEP_ALIVE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_LAST_MODIFIED
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_LINK
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_LOCATION
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_MAX_FORWARDS
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_METHOD
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_PATH
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_PREFER
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_PROXY_AUTHENTICATE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_PROXY_AUTHORIZATION
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_PROXY_CONNECTION
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_RANGE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_REFERER
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_REFRESH
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_RETRY_AFTER
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_SCHEME
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_SERVER
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_SET_COOKIE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_STATUS
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_STRICT_TRANSPORT_SECURITY
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_TE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_TRANSFER_ENCODING
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_UPGRADE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_USER_AGENT
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_VARY
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_VIA
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_HEADER_WWW_AUTHENTICATE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_ACL
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_BASELINE_CONTROL
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_BIND
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_CHECKIN
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_CHECKOUT
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_CONNECT
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_COPY
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_DELETE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_GET
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_HEAD
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_LABEL
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_LINK
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_LOCK
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_MERGE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_MKACTIVITY
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_MKCALENDAR
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_MKCOL
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_MKREDIRECTREF
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_MKWORKSPACE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_MOVE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_OPTIONS
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_ORDERPATCH
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_PATCH
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_POST
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_PRI
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_PROPFIND
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_PROPPATCH
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_PUT
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_REBIND
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_REPORT
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_SEARCH
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_TRACE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_UNBIND
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_UNCHECKOUT
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_UNLINK
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_UNLOCK
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_UPDATE
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_UPDATEREDIRECTREF
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP2_METHOD_VERSION_CONTROL
Использование в Deno
import { constants } from "node:http2";
Тип
string переменная constants.HTTP_STATUS_ACCEPTED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_ALREADY_REPORTED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_BAD_GATEWAY
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_BAD_REQUEST
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_CONFLICT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_CONTINUE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_CREATED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_EXPECTATION_FAILED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_FAILED_DEPENDENCY
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_FORBIDDEN
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_FOUND
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_GATEWAY_TIMEOUT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_GONE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_IM_USED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_INSUFFICIENT_STORAGE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_INTERNAL_SERVER_ERROR
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_LENGTH_REQUIRED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_LOCKED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_LOOP_DETECTED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_METHOD_NOT_ALLOWED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_MISDIRECTED_REQUEST
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_MOVED_PERMANENTLY
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_MULTI_STATUS
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_MULTIPLE_CHOICES
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_NO_CONTENT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_NOT_ACCEPTABLE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_NOT_EXTENDED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_NOT_FOUND
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_NOT_IMPLEMENTED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_NOT_MODIFIED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_OK
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_PARTIAL_CONTENT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_PAYLOAD_TOO_LARGE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_PAYMENT_REQUIRED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_PERMANENT_REDIRECT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_PRECONDITION_FAILED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_PRECONDITION_REQUIRED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_PROCESSING
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_RANGE_NOT_SATISFIABLE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_REQUEST_TIMEOUT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_RESET_CONTENT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_SEE_OTHER
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_SERVICE_UNAVAILABLE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_SWITCHING_PROTOCOLS
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_TEAPOT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_TEMPORARY_REDIRECT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_TOO_MANY_REQUESTS
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_UNAUTHORIZED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_UNORDERED_COLLECTION
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_UNPROCESSABLE_ENTITY
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_UPGRADE_REQUIRED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_URI_TOO_LONG
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_USE_PROXY
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.HTTP_STATUS_VARIANT_ALSO_NEGOTIATES
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.MAX_INITIAL_WINDOW_SIZE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.MAX_MAX_FRAME_SIZE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.MIN_MAX_FRAME_SIZE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_CANCEL
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_COMPRESSION_ERROR
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_CONNECT_ERROR
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_DEFAULT_WEIGHT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_ENHANCE_YOUR_CALM
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_ERR_FRAME_SIZE_ERROR
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_FLAG_ACK
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_FLAG_END_HEADERS
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_FLAG_END_STREAM
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_FLAG_NONE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_FLAG_PADDED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_FLAG_PRIORITY
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_FLOW_CONTROL_ERROR
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_FRAME_SIZE_ERROR
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_HTTP_1_1_REQUIRED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_INADEQUATE_SECURITY
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_INTERNAL_ERROR
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_NO_ERROR
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_PROTOCOL_ERROR
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_REFUSED_STREAM
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_SESSION_CLIENT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_SESSION_SERVER
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_SETTINGS_ENABLE_PUSH
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_SETTINGS_HEADER_TABLE_SIZE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_SETTINGS_MAX_FRAME_SIZE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_SETTINGS_TIMEOUT
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_STREAM_CLOSED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_STREAM_STATE_CLOSED
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_STREAM_STATE_IDLE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_STREAM_STATE_OPEN
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_STREAM_STATE_RESERVED_LOCAL
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.NGHTTP2_STREAM_STATE_RESERVED_REMOTE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.PADDING_STRATEGY_CALLBACK
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.PADDING_STRATEGY_MAX
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная constants.PADDING_STRATEGY_NONE
Использование в Deno
import { constants } from "node:http2";
Тип
number переменная sensitiveHeaders
Использование в Deno
import { sensitiveHeaders } from "node:http2";
Этот символ можно установить как свойство объекта заголовков HTTP/2 со значением-массивом, чтобы указать список заголовков, считающихся конфиденциальными.
Тип
symbol
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/http2