Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 25b1422

Browse filesBrowse files
marco-ippolitoRafaelGSS
authored andcommitted
http: add diagnostic channel http.client.request.created
PR-URL: #55586 Fixes: #55352 Reviewed-By: Paolo Insogna <paolo@cowtech.it> Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com> Reviewed-By: theanarkh <theratliter@gmail.com>
1 parent 2ec4ae7 commit 25b1422
Copy full SHA for 25b1422

File tree

Expand file treeCollapse file tree

4 files changed

+57
-0
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

4 files changed

+57
-0
lines changed
Open diff view settings
Collapse file

‎doc/api/diagnostics_channel.md‎

Copy file name to clipboardExpand all lines: doc/api/diagnostics_channel.md
+7Lines changed: 7 additions & 0 deletions
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -1123,6 +1123,13 @@ independently.
11231123

11241124
#### HTTP
11251125

1126+
`http.client.request.created`
1127+
1128+
* `request` {http.ClientRequest}
1129+
1130+
Emitted when client creates a request object.
1131+
Unlike `http.client.request.start`, this event is emitted before the request has been sent.
1132+
11261133
`http.client.request.start`
11271134

11281135
* `request` {http.ClientRequest}
Collapse file

‎lib/_http_client.js‎

Copy file name to clipboardExpand all lines: lib/_http_client.js
+6Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ const {
8989
const kClientRequestStatistics = Symbol('ClientRequestStatistics');
9090

9191
const dc = require('diagnostics_channel');
92+
const onClientRequestCreatedChannel = dc.channel('http.client.request.created');
9293
const onClientRequestStartChannel = dc.channel('http.client.request.start');
9394
const onClientRequestErrorChannel = dc.channel('http.client.request.error');
9495
const onClientResponseFinishChannel = dc.channel('http.client.response.finish');
@@ -373,6 +374,11 @@ function ClientRequest(input, options, cb) {
373374
this.onSocket(net.createConnection(opts));
374375
}
375376
}
377+
if (onClientRequestCreatedChannel.hasSubscribers) {
378+
onClientRequestCreatedChannel.publish({
379+
request: this,
380+
});
381+
}
376382
}
377383
ObjectSetPrototypeOf(ClientRequest.prototype, OutgoingMessage.prototype);
378384
ObjectSetPrototypeOf(ClientRequest, OutgoingMessage);
Collapse file
+39Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
'use strict';
2+
const common = require('../common');
3+
const assert = require('assert');
4+
const http = require('http');
5+
const dc = require('diagnostics_channel');
6+
7+
const isHTTPServer = (server) => server instanceof http.Server;
8+
const isOutgoingMessage = (object) => object instanceof http.OutgoingMessage;
9+
10+
dc.subscribe('http.client.request.created', common.mustCall(({ request }) => {
11+
assert.strictEqual(request.getHeader('foo'), 'bar');
12+
assert.strictEqual(request.getHeader('baz'), undefined);
13+
assert.strictEqual(isOutgoingMessage(request), true);
14+
assert.strictEqual(isHTTPServer(server), true);
15+
}));
16+
17+
dc.subscribe('http.client.request.start', common.mustCall(({ request }) => {
18+
assert.strictEqual(request.getHeader('foo'), 'bar');
19+
assert.strictEqual(request.getHeader('baz'), 'bar');
20+
assert.strictEqual(isOutgoingMessage(request), true);
21+
}));
22+
23+
const server = http.createServer(common.mustCall((_, res) => {
24+
res.end('done');
25+
}));
26+
27+
server.listen(async () => {
28+
const { port } = server.address();
29+
const req = http.request({
30+
port,
31+
headers: {
32+
'foo': 'bar',
33+
}
34+
}, common.mustCall(() => {
35+
server.close();
36+
}));
37+
req.setHeader('baz', 'bar');
38+
req.end();
39+
});
Collapse file

‎test/parallel/test-diagnostics-channel-http.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-diagnostics-channel-http.js
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ dc.subscribe('http.server.response.finish', common.mustCall(({
5353
assert.strictEqual(isHTTPServer(server), true);
5454
}));
5555

56+
dc.subscribe('http.client.request.created', common.mustCall(({ request }) => {
57+
assert.strictEqual(isOutgoingMessage(request), true);
58+
assert.strictEqual(isHTTPServer(server), true);
59+
}, 2));
60+
5661
const server = http.createServer(common.mustCall((req, res) => {
5762
res.end('done');
5863
}));

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.