當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Node.js http2.createServer([options][, onRequestHandler])用法及代碼示例

http2.createServer([options][, onRequestHandler])

曆史
版本變化
v13.0.0

PADDING_STRATEGY_CALLBACK 已等同於提供 PADDING_STRATEGY_ALIGNED 並且 selectPadding 已被刪除。

v13.3.0、v12.16.0

添加了 maxSessionRejectedStreams 選項,默認值為 100。

v13.3.0、v12.16.0

添加了 maxSessionInvalidFrames 選項,默認值為 1000。

v12.4.0

options 參數現在支持 net.createServer() 選項。

v15.10.0、v14.16.0、v12.21.0、v10.24.0

添加了 unknownProtocolTimeout 選項,默認值為 10000。

v14.4.0、v12.18.0、v10.21.0

添加了 maxSettings 選項,默認值為 32。

v9.6.0

添加了Http1IncomingMessageHttp1ServerResponse 選項。

v8.9.3

添加了默認限製為 10 的 maxOutstandingPings 選項。

v8.9.3

添加了默認限製為 128 個標頭對的 maxHeaderListPairs 選項。

v8.4.0

添加於:v8.4.0


參數
  • options <Object>
    • maxDeflateDynamicTableSize <number> 設置用於縮小標題字段的最大動態表大小。 默認: 4Kib
    • maxSettings <number> 設置每個 SETTINGS 幀的最大設置條目數。允許的最小值是 1默認: 32
    • maxSessionMemory <number> 設置Http2Session 允許使用的最大內存。該值以兆字節數表示,例如1 等於 1 兆字節。允許的最小值是 1 。這是基於信用的限製,現有的 Http2Stream 可能會導致超出此限製,但新的 Http2Stream 實例將在超出此限製時被拒絕。當前 Http2Stream 會話數、標頭壓縮表的當前內存使用、當前排隊發送的數據以及未確認的 PINGSETTINGS 幀都計入當前限製。 默認: 10
    • maxHeaderListPairs <number> 設置標題條目的最大數量。這類似於 http.Server#maxHeadersCount http.ClientRequest#maxHeadersCount 。最小值為 4默認: 128
    • maxOutstandingPings <number> 設置未完成的未確認 ping 的最大數量。 默認: 10
    • maxSendHeaderBlockLength <number> 設置序列化、壓縮的標頭塊的最大允許大小。嘗試發送超出此限製的標頭將導致發出 'frameError' 事件並關閉和銷毀流。雖然這會將最大允許大小設置為整個標頭塊,但 nghttp2(內部 http2 庫)對每個解壓縮的鍵/值對都有 65536 的限製。
    • 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 Settings Object> 在連接時發送到遠程對等方的初始設置。
    • 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
    • ...:可以提供任何 net.createServer() 選項。
  • onRequestHandler <Function>Compatibility API
  • 返回: <Http2Server>

返回創建和管理 Http2Session 實例的 net.Server 實例。

由於沒有已知的瀏覽器支持 unencrypted HTTP/2 ,因此在與瀏覽器客戶端通信時需要使用 http2.createSecureServer()

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(80);

相關用法


注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 http2.createServer([options][, onRequestHandler])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。