http2.createSecureServer(options[, onRequestHandler])
options<Object>allowHTTP1<boolean> 不支持 HTTP/2 的传入客户端连接在设置为true时将降级为 HTTP/1.x。请参见'unknownProtocol'事件。请参见 ALPN 协商。 默认值:false。maxDeflateDynamicTableSize<number> 设置用于压缩头字段的最大动态表大小。默认值:4Kib。maxSettings<number> 设置每个SETTINGS帧的最大设置条目数。允许的最小值是1。默认值:32。maxSessionMemory<number> 设置Http2Session允许使用的最大内存。该值以兆字节为单位,例如1表示 1 兆字节。允许的最小值为1。这是基于额度的限制,已有的Http2Stream可能会导致超过该限制,但在超出限制时,新的Http2Stream实例将被拒绝。当前Http2Stream会话的数量、头部压缩表的当前内存使用量、待发送的数据以及未确认的PING和SETTINGS帧都会计入当前限制。默认值:10。maxHeaderListPairs<number> 设置最大页眉条目数。这类似于node:http模块中的server.maxHeadersCount或request.maxHeadersCount。最小值为4。默认值:128。maxOutstandingPings<number> 设置未确认 ping 的最大数量。默认值:10。maxSendHeaderBlockLength<number> 设置序列化、压缩头块的最大允许大小。尝试发送超过此限制的头部时,将触发'frameError'事件,并且流将被关闭和销毁。paddingStrategy<number> 用于确定HEADERS和DATA帧应使用的填充量的策略。默认值: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 Settings Object> 连接时发送给远程端的初始设置。remoteCustomSettings<Array> 整数值数组决定了设置类型,这些类型包含在接收到的 remoteSettings 的customSettings属性中。有关允许的设置类型的更多信息,请参见Http2Settings对象的customSettings属性。- ...:可以提供任何
tls.createServer()选项。对于服务器,通常需要身份选项(pfx或key/cert)。 origins<string[]> 在创建新的服务器Http2Session后,立即在ORIGIN帧中发送的一组源字符串。unknownProtocolTimeout<number> 指定服务器在'unknownProtocol'事件触发时应等待的超时时间(以毫秒为单位)。如果在此时间内套接字尚未被销毁,服务器将销毁它。默认值:10000。
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);