![require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages](https://cdn.sanity.io/images/cgdhsj6q/production/be8ab80c8efa5907bc341c6fefe9aa20d239d890-1600x1097.png?w=400&fit=max&auto=format)
Security News
require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
request-stats
Advanced tools
Get stats on your Node.js HTTP server requests.
Emits two events:
request
when ever a request starts: Passes a Request object that can later be used to query for the progress of a long running requestcomplete
when ever a request completes: Passes a stats object containing the overall stats for the entire HTTP requestnpm install request-stats --save
Get stats for each completed HTTP request:
var requestStats = require('request-stats')
var server = http.createServer(...)
requestStats(server, function (stats) {
// this function will be called every time a request to the server completes
console.log(stats)
})
Get periodic stats for long running requests:
var server = http.createServer(...)
var stats = requestStats(server)
stats.on('request', function (req) {
// evey second, print stats
var interval = setInterval(function () {
var progress = req.progress()
console.log(progress)
if (progress.completed) clearInterval(interval)
}, 1000)
})
requestStats(server[, callback])
Attach request-stats to a HTTP server.
Initialize request-stats with an instance a HTTP server. Returns a StatsEmitter object. Optionally provide a callback which will be called for each completed HTTP request with a stats object (see stats object details below).
If no callback is provided, you can later attach a listener on the "complete" event.
requestStats(req, res[, callback])
Attach request-stats to a single HTTP request.
Initialize request-stats with an instance a HTTP request and response. Returns a StatsEmitter object. Optionally provide a callback which will be called with a stats object when the HTTP request completes (see stats object details below).
If no callback is provided, you can later attach a listener on the "complete" event.
.on('complete', callback)
Calls the callback function with a stats object when a HTTP request completes:
{
ok: true, // `true` if the connection was closed correctly and `false` otherwise
time: 0, // The milliseconds it took to serve the request
req: {
bytes: 0, // Number of bytes sent by the client
headers: { ... }, // The headers sent by the client
method: 'POST', // The HTTP method used by the client
path: '...', // The path part of the request URL
ip: '...', // The remote ip
raw: [Object] // The original `http.IncomingMessage` object
},
res: {
bytes: 0, // Number of bytes sent back to the client
headers: { ... }, // The headers sent back to the client
status: 200, // The HTTP status code returned to the client
raw: [Object] // The original `http.ServerResponse` object
}
}
.on('request', callback)
Calls the callback function with a special Request object when a HTTP request is made to the server.
The Request object should not be confused with the Node.js http.IncomingMessage object. The request-stats Request object provides only a single but powerfull function:
.progress()
Returns a progress object if called while a HTTP request is in progress.
If called multiple times, the returned progress object will contain the
delta of the previous call to .progress()
.
{
completed: false, // `false` if the request is still in progress
time: 0, // The total time the reuqest have been in progress
timeDelta: 0, // The time since previous call to .progress()
req: {
bytes: 0, // Total bytes received
bytesDelta: 0, // Bytes received since previous call to .progress()
speed: 0, // Bytes per second calculated since previous call to .progress()
bytesLeft: 0, // If the request contains a Content-Size header
timeLeft: 0 // If the request contains a Content-Size header
},
res: {
bytes: 0, // Total bytes send back to the client
bytesDelta: 0, // Bytes sent back to the client since previous call to .progress()
speed: 0 // Bytes per second calculated since previous call to .progress()
}
}
Thanks to mafintosh for coming up with the initial concept and pointing me in the right direction.
MIT
FAQs
Get stats on your Node.js HTTP server requests
The npm package request-stats receives a total of 73,169 weekly downloads. As such, request-stats popularity was classified as popular.
We found that request-stats demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.