limitation
Version:
An efficient rate limiter with several backend, including a Kademlia DHT.
33 lines (27 loc) • 787 B
JavaScript
;
var RateLimiter = require('../index');
var numLimiters = 2;
var limiters = [];
// Start a couple of DHT-backed limiters, each corresponding to one DHT node.
for (var i = 0; i < numLimiters; i++) {
var limiter = new RateLimiter({
seeds: [{
address: 'localhost',
port: 3050
}],
interval: 10000,
});
limiter.setup();
limiters.push(limiter);
}
// Periodically exercise the rate limiters.
setInterval(function() {
var iterations = 100; //Math.random() * 4;
var rejected = 0;
for (var i = 0; i < iterations; i++) {
if (limiters[i % numLimiters].isAboveLimit('foo' + i % 20, 5)) {
rejected++;
}
}
console.log('rejected ' + rejected + '/' + iterations);
}, 1000);