http2.createSecureServer(options[, onRequestHandler])


  • options <Object>
    • allowHTTP1 <boolean> 当设置为 true 时,不支持 HTTP/2 的传入客户端连接将被降级为 HTTP/1.x。请参见 'unknownProtocol' 事件。参见 ALPN 协商默认值: false
    • maxDeflateDynamicTableSize <number> 设置用于压缩头字段的最大动态表大小。默认值: 4Kib
    • maxSettings <number> 设置每个 SETTINGS 帧的最大设置条目数量。允许的最小值为 1默认值: 32
    • maxSessionMemory<number> 设置 Http2Session 允许使用的最大内存。该值以兆字节为单位,例如 1 表示 1 兆字节。允许的最小值为 1。这是基于额度的限制,已有的 Http2Stream 可能会导致超过该限制,但在超出限制时,新的 Http2Stream 实例将被拒绝。当前 Http2Stream 会话的数量、头部压缩表的当前内存使用量、待发送的数据以及未确认的 PINGSETTINGS 帧都会计入当前限制。默认值: 10
    • maxHeaderListPairs <number> 设置最大头部条目数。这类似于 node:http 模块中的 server.maxHeadersCountrequest.maxHeadersCount。最小值为 4默认值: 128
    • maxOutstandingPings <number> 设置未确认 ping 的最大数量。默认值: 10
    • maxSendHeaderBlockLength <number> 设置允许的序列化压缩头块的最大大小。尝试发送超过此限制的头部将导致触发 'frameError' 事件,并且流会被关闭和销毁。
    • paddingStrategy <number> 用于确定 HEADERSDATA 帧使用的填充量的策略。默认值: http2.constants.PADDING_STRATEGY_NONE。值可以是以下之一:
      • http2.constants.PADDING_STRATEGY_NONE:不应用填充。
      • http2.constants.PADDING_STRATEGY_MAX:由内部实现决定的最大填充量将被应用。
      • http2.constants.PADDING_STRATEGY_ALIGNED:尝试应用足够的填充,以确保总帧长度(包括9字节的头部)是8的倍数。对于每个帧,允许的最大填充字节数由当前流量控制状态和设置决定。如果此最大值小于计算所需的对齐填充量,则使用最大值,并且总帧长度不一定对齐到8字节。
    • peerMaxConcurrentStreams <number> 设置远程对等方的最大并发流数量,就好像收到了 SETTINGS 帧一样。如果远程对等方为 maxConcurrentStreams 设置了自己的值,则此设置将被覆盖。默认值: 100
    • maxSessionInvalidFrames <integer> 设置在会话关闭之前可以容忍的最大无效帧数。 默认值: 1000
    • maxSessionRejectedStreams <integer> 设置在会话关闭之前,允许创建时被拒绝的最大流数量。每次拒绝都会伴随一个 NGHTTP2_ENHANCE_YOUR_CALM 错误,该错误应告知对端不要再打开更多流,因此继续打开流被视为对端行为异常。默认值: 100
    • settings HTTP/2 设置对象 与远程端建立连接时发送的初始设置。
    • streamResetBurst <number>streamResetRate <number> 设置传入流重置(RST_STREAM 帧)的速率限制。两个设置都必须配置才能生效,默认值分别为 1000 和 33。
    • remoteCustomSettings <Array> 整数值数组用于确定包含在接收到的 remoteSettingscustomSettings 属性中的设置类型。有关允许的设置类型的更多信息,请参阅 Http2Settings 对象的 customSettings 属性。
    • ...options <Object> 可以提供任何 tls.createServer() 选项。对于服务器,通常需要身份选项(pfxkey/cert)。
    • origins <string[]> 一个包含源字符串的数组,用于在创建新的服务器 Http2Session 后立即通过 ORIGIN 帧发送。
    • unknownProtocolTimeout <number> 指定服务器在 'unknownProtocol' 事件触发时应等待的毫秒超时时间。如果在此时间内套接字尚未被销毁,服务器将会销毁它。默认值: 10000
    • strictFieldWhitespaceValidation <boolean> 如果为 true,则会按照 RFC-9113 对 HTTP/2 头字段名称和值进行严格的前导和尾随空白验证。 默认值: true
  • onRequestHandler <Function> 参见 兼容性接口
  • 返回:<Http2SecureServer>

返回一个 tls.Server 实例,该实例创建并管理 Http2Session 实例。

【Returns a tls.Server instance that creates and manages Http2Session instances.】

import { createSecureServer } from 'node:http2';
import { readFileSync } from 'node:fs';

const options = {
  key: readFileSync('server-key.pem'),
  cert: readFileSync('server-cert.pem'),
};

// Create a secure HTTP/2 server
const server = 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);const http2 = require('node:http2');
const fs = require('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);