| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 8a06b7b commit 8c97f63
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -307,6 +307,41 @@ channel.subscribe(onMessage); | |||
| 307 | 307 | channel.unsubscribe(onMessage); | |
| 308 | 308 | ``` | |
| 309 | 309 | ||
| 310 | + ### Built-in Channels | ||
| 311 | + | ||
| 312 | + #### HTTP | ||
| 313 | + | ||
| 314 | + `http.client.request.start` | ||
| 315 | + | ||
| 316 | + * `request` {http.ClientRequest} | ||
| 317 | + | ||
| 318 | + Emitted when client starts a request. | ||
| 319 | + | ||
| 320 | + `http.client.response.finish` | ||
| 321 | + | ||
| 322 | + * `request` {http.ClientRequest} | ||
| 323 | + * `response` {http.IncomingMessage} | ||
| 324 | + | ||
| 325 | + Emitted when client receives a response. | ||
| 326 | + | ||
| 327 | + `http.server.request.start` | ||
| 328 | + | ||
| 329 | + * `request` {http.IncomingMessage} | ||
| 330 | + * `response` {http.ServerResponse} | ||
| 331 | + * `socket` {net.Socket} | ||
| 332 | + * `server` {http.Server} | ||
| 333 | + | ||
| 334 | + Emitted when server receives a request. | ||
| 335 | + | ||
| 336 | + `http.server.response.finish` | ||
| 337 | + | ||
| 338 | + * `request` {http.IncomingMessage} | ||
| 339 | + * `response` {http.ServerResponse} | ||
| 340 | + * `socket` {net.Socket} | ||
| 341 | + * `server` {http.Server} | ||
| 342 | + | ||
| 343 | + Emitted when server sends a response. | ||
| 344 | + | ||
| 310 | 345 | [`'uncaughtException'`]: process.md#event-uncaughtexception | |
| 311 | 346 | [`channel.subscribe(onMessage)`]: #channelsubscribeonmessage | |
| 312 | 347 | [`diagnostics_channel.channel(name)`]: #diagnostics_channelchannelname | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -90,6 +90,10 @@ const { | |||
| 90 | 90 | ||
| 91 | 91 | const kClientRequestStatistics = Symbol('ClientRequestStatistics'); | |
| 92 | 92 | ||
| 93 | + const dc = require('diagnostics_channel'); | ||
| 94 | + const onClientRequestStartChannel = dc.channel('http.client.request.start'); | ||
| 95 | + const onClientResponseFinishChannel = dc.channel('http.client.response.finish'); | ||
| 96 | + | ||
| 93 | 97 | const { addAbortSignal, finished } = require('stream'); | |
| 94 | 98 | ||
| 95 | 99 | let debug = require('internal/util/debuglog').debuglog('http', (fn) => { | |
@@ -367,6 +371,11 @@ ClientRequest.prototype._finish = function _finish() { | |||
| 367 | 371 | }, | |
| 368 | 372 | }); | |
| 369 | 373 | } | |
| 374 | + if (onClientRequestStartChannel.hasSubscribers) { | ||
| 375 | + onClientRequestStartChannel.publish({ | ||
| 376 | + request: this, | ||
| 377 | + }); | ||
| 378 | + } | ||
| 370 | 379 | }; | |
| 371 | 380 | ||
| 372 | 381 | ClientRequest.prototype._implicitHeader = function _implicitHeader() { | |
@@ -645,6 +654,12 @@ function parserOnIncomingClient(res, shouldKeepAlive) { | |||
| 645 | 654 | }, | |
| 646 | 655 | }); | |
| 647 | 656 | } | |
| 657 | + if (onClientResponseFinishChannel.hasSubscribers) { | ||
| 658 | + onClientResponseFinishChannel.publish({ | ||
| 659 | + request: req, | ||
| 660 | + response: res, | ||
| 661 | + }); | ||
| 662 | + } | ||
| 648 | 663 | req.res = res; | |
| 649 | 664 | res.req = req; | |
| 650 | 665 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,63 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + const common = require('../common'); | ||
| 3 | + const assert = require('assert'); | ||
| 4 | + const http = require('http'); | ||
| 5 | + const net = require('net'); | ||
| 6 | + const dc = require('diagnostics_channel'); | ||
| 7 | + | ||
| 8 | + const onClientRequestStart = dc.channel('http.client.request.start'); | ||
| 9 | + const onClientResponseFinish = dc.channel('http.client.response.finish'); | ||
| 10 | + const onServerRequestStart = dc.channel('http.server.request.start'); | ||
| 11 | + const onServerResponseFinish = dc.channel('http.server.response.finish'); | ||
| 12 | + | ||
| 13 | + const isHTTPServer = (server) => server instanceof http.Server; | ||
| 14 | + const isIncomingMessage = (object) => object instanceof http.IncomingMessage; | ||
| 15 | + const isOutgoingMessage = (object) => object instanceof http.OutgoingMessage; | ||
| 16 | + const isNetSocket = (socket) => socket instanceof net.Socket; | ||
| 17 | + | ||
| 18 | + onClientRequestStart.subscribe(common.mustCall(({ request }) => { | ||
| 19 | + assert.strictEqual(isOutgoingMessage(request), true); | ||
| 20 | + })); | ||
| 21 | + | ||
| 22 | + onClientResponseFinish.subscribe(common.mustCall(({ request, response }) => { | ||
| 23 | + assert.strictEqual(isOutgoingMessage(request), true); | ||
| 24 | + assert.strictEqual(isIncomingMessage(response), true); | ||
| 25 | + })); | ||
| 26 | + | ||
| 27 | + onServerRequestStart.subscribe(common.mustCall(({ | ||
| 28 | + request, | ||
| 29 | + response, | ||
| 30 | + socket, | ||
| 31 | + server, | ||
| 32 | + }) => { | ||
| 33 | + assert.strictEqual(isIncomingMessage(request), true); | ||
| 34 | + assert.strictEqual(isOutgoingMessage(response), true); | ||
| 35 | + assert.strictEqual(isNetSocket(socket), true); | ||
| 36 | + assert.strictEqual(isHTTPServer(server), true); | ||
| 37 | + })); | ||
| 38 | + | ||
| 39 | + onServerResponseFinish.subscribe(common.mustCall(({ | ||
| 40 | + request, | ||
| 41 | + response, | ||
| 42 | + socket, | ||
| 43 | + server, | ||
| 44 | + }) => { | ||
| 45 | + assert.strictEqual(isIncomingMessage(request), true); | ||
| 46 | + assert.strictEqual(isOutgoingMessage(response), true); | ||
| 47 | + assert.strictEqual(isNetSocket(socket), true); | ||
| 48 | + assert.strictEqual(isHTTPServer(server), true); | ||
| 49 | + })); | ||
| 50 | + | ||
| 51 | + const server = http.createServer(common.mustCall((req, res) => { | ||
| 52 | + res.end('done'); | ||
| 53 | + })); | ||
| 54 | + | ||
| 55 | + server.listen(() => { | ||
| 56 | + const { port } = server.address(); | ||
| 57 | + http.get(`http://localhost:${port}`, (res) => { | ||
| 58 | + res.resume(); | ||
| 59 | + res.on('end', () => { | ||
| 60 | + server.close(); | ||
| 61 | + }); | ||
| 62 | + }); | ||
| 63 | + }); | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments