npm install micron-throttle
The throttle module can be used in just about any application that supports the function (req, res, next)
middleware convention (such as express, connect, union or restify). For example in restify:
var http = require('restify'),
throttle = require('micron-throttle');
// Create the server and pass-in the throttle middleware
var server = restify.createServer();
server.use(throttle({
burst: 100,
rate: 50,
ip: true,
overrides: {
'192.168.1.1': {
rate: 0, // unlimited
burst: 0
}
}
}));
// Define a route
server.get('/hello/:name', function (req, res, next) {
res.send('hello ' + req.params.name);
});
// Listen
server.listen(3333);
Name | Default | Type | Description |
---|---|---|---|
rate | 10 | Number | Steady state number of requests/second to allow |
burst | 25 | Number | If available, the amount of requests to burst to |
ip | true | Boolean | Do throttling on a /32 (source IP) |
xff | false | Boolean | Do throttling on a /32 (X-Forwarded-For) |
username | false | Boolean | Do throttling on req.username |
overrides | null | Object | Per "key" overrides |
tokensTable | n/a | Object | Storage engine; must support set/get |
maxKeys | 10000 | Number | If using the built-in storage table, the maximum distinct throttling keys to allow at a time |
npm test
This module is adapted from restify's throttle plug-in – originally developed by Mark Cavage.