Install node-limiter , then create a Transform stream that will throttle any Stream s:
var util = require('util'); var Transform = require('stream').Transform; var TokenBucket = require('limiter').TokenBucket; function BucketStream(rate, interval, parentBucket, options) { Transform.call(this, options); this.bucket = new TokenBucket(Number.POSITIVE_INFINITY, rate, interval, parentBucket); } util.inherits(BucketStream, Transform); BucketStream.prototype._transform = function(chunk, encoding, callback) { this.bucket.removeTokens(chunk.length, function(err) { callback(err, chunk); }); };
Then the request will be ReadableStream :
var bucketStream = new BucketStream(1024 * 500, 'second');
Now read with bucketStream (instead of req) as fast as you want, you only get 500 kB / s
I made it from above, so be careful :)
Mike gleason jr couturier
source share