Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

http/2 agent 下会丢失 undici:client:sendHeaders 事件 #510

Open
fengmk2 opened this issue Jun 1, 2024 · 1 comment
Open

http/2 agent 下会丢失 undici:client:sendHeaders 事件 #510

fengmk2 opened this issue Jun 1, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@fengmk2
Copy link
Member

fengmk2 commented Jun 1, 2024

const agent = new Agent({
    allowH2: true,
  });
 const response = await request('https://registry.npmmirror.com', {
    dataType: 'json',
    timing: true,
    dispatcher: agent,
  });
  console.log(response.status, response.headers);
@fengmk2 fengmk2 added the bug Something isn't working label Jun 1, 2024
@fengmk2
Copy link
Member Author

fengmk2 commented Jun 1, 2024

http1

URLLIB:HTTPCLIENT 40679: Request#1 GET https://registry.npmmirror.com/, headers: {"user-agent":"node-urllib/VERSION Node.js/22.2.0 (OS X; arm64)","accept":"application/json"}, headersTimeout: 5000, bodyTimeout: 5000, isStreamingRequest: false
URLLIB:DIAGNOSTICSCHANNEL 40679: [undici:request:create] Request#1 GET https://registry.npmmirror.com, path: /, headers: [
  'user-agent',
  'node-urllib/VERSION Node.js/22.2.0 (OS X; arm64)',
  'accept',
  'application/json',
  [length]: 4
]
UNDICI 40679: connecting to registry.npmmirror.com using https:undefined
 ❯ test/options.dispatcher.test.ts (3)
 ❯ test/options.dispatcher.test.ts (3)
   ❯ options.dispatcher.test.ts (3)
     ↓ should work with proxyAgent dispatcher [skipped]
     ↓ should work with getGlobalDispatcher() dispatcher [skipped]
     ⠦ should work with http/2 dispatcher
URLLIB:DIAGNOSTICSCHANNEL 40679: [undici:client:connected] Socket#1 connected (sock: {
  localAddress: '172.16.21.213',
  localPort: 63220,
  remoteAddress: '61.160.192.98',
  remotePort: 443,
  attemptedAddresses: undefined,
  connecting: false
})
UNDICI 40679: sending request to GET https://registry.npmmirror.com//
URLLIB:DIAGNOSTICSCHANNEL 40679: [undici:client:sendHeaders] Request#1 send headers on Socket#1 (handled 1 requests, sock: {
  localAddress: '172.16.21.213',
  localPort: 63220,
  remoteAddress: '61.160.192.98',
 ❯ test/options.dispatcher.test.ts (3)
stdout | test/options.dispatcher.test.ts > options.dispatcher.test.ts > should work with http/2 dispatcher
200 {
  server: 'Tengine',
  'content-type': 'application/json; charset=utf-8',
  'content-length': '1245',
  connection: 'keep-alive',
  'strict-transport-security': 'max-age=5184000',
  date: 'Sat, 01 Jun 2024 02:26:42 GMT',
  vary: 'Origin',
  'request-id': '6262e3b0-1fbe-11ef-9fce-85275689f862',
  'x-frame-options': 'SAMEORIGIN',
  'x-xss-protection': '1; mode=block',
  'x-content-type-options': 'nosniff',
  'x-download-options': 'noopen',
  'x-readtime': '0.771',
  via: 'cn6425.l1, kunlun5.cn6425, l2cn3125.l2, cache58.l2cn3125, registry.npmmirror.com-06, cache58.l2cn3125[18,18,200-0,M], cache19.l2cn3125[19,0], kunlun5.cn6425[35,34,200-0,M], kunlun7.cn6425[35,0]',
  'ali-swift-global-savetime': '1717208802',
  'x-cache': 'MISS TCP_MISS dirn:-2:-2',
  'x-swift-savetime': 'Sat, 01 Jun 2024 02:26:42 GMT',
  'x-swift-cachetime': '0',
  'timing-allow-origin': '*',
  eagleid: '3da0c01117172088026575115e'
}

URLLIB:DIAGNOSTICSCHANNEL 40679: [undici:request:headers] Request#1 get 200 response headers on Socket#1 (handled 1 responses, sock: {
  localAddress: '172.16.21.213',
  localPort: 63220,
  remoteAddress: '61.160.192.98',
  remotePort: 443,
  attemptedAddresses: undefined,
  connecting: false
})
UNDICI 40679: trailers received from GET https://registry.npmmirror.com//
URLLIB:DIAGNOSTICSCHANNEL 40679: [undici:request:trailers] Request#1 get response body and trailers
URLLIB:HTTPCLIENT 40679: Request#1 got response, status: 200, headers: {"server":"Tengine","content-type":"application/json; charset=utf-8","content-length":"1245","connection":"keep-alive","strict-transport-security":"max-age=5184000","date":"Sat, 01 Jun 2024 02:26:42 GMT","vary":"Origin","request-id":"6262e3b0-1fbe-11ef-9fce-85275689f862","x-frame-options":"SAMEORIGIN","x-xss-protection":"1; mode=block","x-content-type-options":"nosniff","x-download-options":"noopen","x-readtime":"0.771","via":"cn6425.l1, kunlun5.cn6425, l2cn3125.l2, cache58.l2cn3125, registry.npmmirror.com-06, cache58.l2cn3125[18,18,200-0,M], cache19.l2cn3125[19,0], kunlun5.cn6425[35,34,200-0,M], kunlun7.cn6425[35,0]","ali-swift-global-savetime":"1717208802","x-cache":"MISS TCP_MISS dirn:-2:-2","x-swift-savetime":"Sat, 01 Jun 2024 02:26:42 GMT","x-swift-cachetime":"0","timing-allow-origin":"*","eagleid":"3da0c01117172088026575115e"}, timing: {"queuing":1.365,"connected":98.548,"requestHeadersSent":99.597,"requestSent":100,"waiting":160.441,"contentDownload":161.505}

http2

URLLIB:HTTPCLIENT 38523: Request#1 GET https://registry.npmmirror.com/, headers: {"user-agent":"node-urllib/VERSION Node.js/22.2.0 (OS X; arm64)","accept":"application/json"}, headersTimeout: 5000, bodyTimeout: 5000, isStreamingRequest: false
URLLIB:DIAGNOSTICSCHANNEL 38523: [undici:request:create] Request#1 GET https://registry.npmmirror.com, path: /, headers: [
  'user-agent',
  'node-urllib/VERSION Node.js/22.2.0 (OS X; arm64)',
  'accept',
  'application/json',
  [length]: 4
]
UNDICI 38523: connecting to registry.npmmirror.com using https:undefined
 ❯ test/options.dispatcher.test.ts (3)
   ❯ options.dispatcher.test.ts (3)
     ↓ should work with proxyAgent dispatcher [skipped]
     ↓ should work with getGlobalDispatcher() dispatcher [skipped]
     ⠦ should work with http/2 dispatcher
HTTP2 38523: Http2Session client: setting up session handle
HTTP2 38523: Http2Session client: sending settings
HTTP2 38523: Http2Session client: submitting settings
HTTP2 38523: Http2Session client: created
UNDICI 38523: connected to registry.npmmirror.com using https:h2
URLLIB:DIAGNOSTICSCHANNEL 38523: [undici:client:connected] Socket#1 connected (sock: {
  localAddress: '172.16.21.213',
  localPort: 62742,
  remoteAddress: '180.213.251.220',
  remotePort: 443,
  attemptedAddresses: undefined,
  connecting: false
})
HTTP2 38523: Http2Session client: initiating request
HTTP2 38523: Http2Session client: connected, initializing request
 ❯ test/options.dispatcher.test.ts (3)
 ❯ test/options.dispatcher.test.ts (3)
stdout | test/options.dispatcher.test.ts > options.dispatcher.test.ts > should work with http/2 dispatcher
200 {
  server: 'Tengine',
  'content-type': 'application/json; charset=utf-8',
  'content-length': '1275',
  'strict-transport-security': 'max-age=5184000',
  date: 'Sat, 01 Jun 2024 02:22:43 GMT',
  vary: 'Origin',
  'request-id': 'd3982be0-1fbd-11ef-8a4f-85203085f64a',
  'x-frame-options': 'SAMEORIGIN',
  'x-xss-protection': '1; mode=block',
  'x-content-type-options': 'nosniff',
  'x-download-options': 'noopen',
  'x-readtime': '0.912',
  via: 'cn4770.l1, kunlun12.cn4770, l2cn3137.l2, cache30.l2cn3137, npmmirror-x86-2022012802003, cache30.l2cn3137[40,39,200-0,M], cache62.l2cn3137[41,0], kunlun12.cn4770[54,54,200-0,M], kunlun8.cn4770[56,0]',
  'ali-swift-global-savetime': '1717208563',
  'x-cache': 'MISS TCP_MISS dirn:-2:-2',
  'x-swift-savetime': 'Sat, 01 Jun 2024 02:22:43 GMT',
  'x-swift-cachetime': '0',
  'timing-allow-origin': '*',
  eagleid: 'b4d5fb9c17172085630727029e'
}

HTTP2 38523: Http2Stream 1 [Http2Session client]: emitting stream 'response' event
UNDICI 38523: received response to GET https://registry.npmmirror.com// - HTTP 200
URLLIB:DIAGNOSTICSCHANNEL 38523: [undici:request:headers] Request#1 get 200 response headers on Unknown Socket
UNDICI 38523: trailers received from GET https://registry.npmmirror.com//
URLLIB:DIAGNOSTICSCHANNEL 38523: [undici:request:trailers] Request#1 get response body and trailers
URLLIB:HTTPCLIENT 38523: Request#1 got response, status: 200, headers: {"server":"Tengine","content-type":"application/json; charset=utf-8","content-length":"1275","strict-transport-security":"max-age=5184000","date":"Sat, 01 Jun 2024 02:22:43 GMT","vary":"Origin","request-id":"d3982be0-1fbd-11ef-8a4f-85203085f64a","x-frame-options":"SAMEORIGIN","x-xss-protection":"1; mode=block","x-content-type-options":"nosniff","x-download-options":"noopen","x-readtime":"0.912","via":"cn4770.l1, kunlun12.cn4770, l2cn3137.l2, cache30.l2cn3137, npmmirror-x86-2022012802003, cache30.l2cn3137[40,39,200-0,M], cache62.l2cn3137[41,0], kunlun12.cn4770[54,54,200-0,M], kunlun8.cn4770[56,0]","ali-swift-global-savetime":"1717208563","x-cache":"MISS TCP_MISS dirn:-2:-2","x-swift-savetime":"Sat, 01 Jun 2024 02:22:43 GMT","x-swift-cachetime":"0","timing-allow-origin":"*","eagleid":"b4d5fb9c17172085630727029e"}, timing: {"queuing":1.389,"connected":0,"requestHeadersSent":0,"requestSent":105.459,"waiting":202.344,"contentDownload":204.463}
HTTP2 38523: Http2Stream 1 [Http2Session client]: closed with code 0, closed false, readable false
HTTP2 38523: Http2Stream 1 [Http2Session client]: destroying stream

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant