request-stats
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 request
Installation
npm install request-stats --save
Example usage
Get stats for each completed HTTP request:
var requestStats = var server = http
Get periodic stats for long running requests:
var server = http var stats = stats
API
Constructor
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.
StatsEmitter object
.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.
Request object
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()
Acknowledgement
Thanks to mafintosh for coming up with the initial concept and pointing me in the right direction.
License
MIT