http2.createServer([options][, onRequestHandler])
options<Object>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'事件,并且流将被关闭和销毁。虽然这设置了整个头块的最大允许大小,但nghttp2(内部 http2 库)对每个解压后的键/值对的限制为65536。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。settingsHTTP/2 设置对象 与远程端建立连接时发送的初始设置。streamResetBurst<number> 和streamResetRate<number> 设置传入流重置(RST_STREAM 帧)的速率限制。两个设置都必须配置才能生效,默认值分别为 1000 和 33。remoteCustomSettings<Array> 整数值数组用于确定设置类型,这些类型包含在接收到的 remoteSettings 的CustomSettings属性中。有关允许的设置类型的详细信息,请参阅Http2Settings对象的CustomSettings属性。Http1IncomingMessage<http.IncomingMessage> 指定用于 HTTP/1 回退的IncomingMessage类。适用于扩展原始的http.IncomingMessage。默认值:http.IncomingMessage。Http1ServerResponse<http.ServerResponse> 指定用于 HTTP/1 回退的ServerResponse类。适用于扩展原始的http.ServerResponse。默认值:http.ServerResponse。Http2ServerRequest<http2.Http2ServerRequest> 指定要使用的Http2ServerRequest类。适用于扩展原始的Http2ServerRequest。默认值:Http2ServerRequest。Http2ServerResponse<http2.Http2ServerResponse> 指定要使用的Http2ServerResponse类。适用于扩展原始的Http2ServerResponse。默认值:Http2ServerResponse。unknownProtocolTimeout<number> 指定服务器在发出'unknownProtocol'时应等待的毫秒数超时。如果在该时间内套接字尚未被销毁,服务器将会销毁它。默认值:10000。strictFieldWhitespaceValidation<boolean> 如果为true,则会按照 RFC-9113 对 HTTP/2 头字段名称和值进行严格的前导和尾随空白验证。 默认值:true。...选项<Object> 可以提供任何net.createServer()选项。
onRequestHandler<Function> 参见 兼容性接口- 返回:<Http2Server>
返回一个 net.Server 实例,该实例创建并管理 Http2Session 实例。
【Returns a net.Server instance that creates and manages Http2Session
instances.】
由于目前没有已知的浏览器支持 未加密的 HTTP/2,因此在与浏览器客户端通信时必须使用 http2.createSecureServer()。
【Since there are no browsers known that support
unencrypted HTTP/2, the use of
http2.createSecureServer() is necessary when communicating
with browser clients.】
import { createServer } from 'node:http2';
// Create an unencrypted HTTP/2 server.
// Since there are no browsers known that support
// unencrypted HTTP/2, the use of `createSecureServer()`
// is necessary when communicating with browser clients.
const server = 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);const http2 = require('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);