Expressjs / connect - Simulate a slow file download

Is there a way to set the mode or value in a connection or express to simulate slow file downloads

+8
express connect
source share
1 answer

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'); // 500KB/sec req.pipe(bucketStream); 

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 :)

+1
source share

All Articles