Package Exports
- @szmarczak/http-timer
- @szmarczak/http-timer/dist/source
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@szmarczak/http-timer) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
http-timer
Timings for HTTP requests
Inspired by the request
package.
Installation
NPM:
npm install @szmarczak/http-timer
Yarn:
yarn add @szmarczak/http-timer
Usage
Note:
- The measured events resemble Node.js events, not the kernel ones.
- Sending a chunk greater than
highWaterMark
will result in invalidupload
andresponse
timings. You can avoid this by splitting the payload into smaller chunks.
const https = require('https');
const timer = require('@szmarczak/http-timer');
const request = https.get('https://httpbin.org/anything');
timer(request);
request.once('response', response => {
response.resume();
response.once('end', () => {
console.log(response.timings); // You can use `request.timings` as well
});
});
// {
// start: 1572712180361,
// socket: 1572712180362,
// lookup: 1572712180415,
// connect: 1572712180571,
// upload: 1572712180884,
// response: 1572712181037,
// end: 1572712181039,
// error: undefined,
// abort: undefined,
// phases: {
// wait: 1,
// dns: 53,
// tcp: 156,
// request: 313,
// firstByte: 153,
// download: 2,
// total: 678
// }
// }
API
timer(request)
Returns: Object
Note: The time is a number
representing the milliseconds elapsed since the UNIX epoch.
start
- Time when the request started.socket
- Time when a socket was assigned to the request.lookup
- Time when the DNS lookup finished.connect
- Time when the socket successfully connected.secureConnect
- Time when the socket securely connected.upload
- Time when the request finished uploading.response
- Time when the request firedresponse
event.end
- Time when the response firedend
event.error
- Time when the request firederror
event.abort
- Time when the request firedabort
event.phases
wait
-timings.socket - timings.start
dns
-timings.lookup - timings.socket
tcp
-timings.connect - timings.lookup
tls
-timings.secureConnect - timings.connect
request
-timings.upload - (timings.secureConnect || timings.connect)
firstByte
-timings.response - timings.upload
download
-timings.end - timings.response
total
-(timings.end || timings.error || timings.abort) - timings.start
If something has not been measured yet, it will be undefined
.
License
MIT