Is there a way of setting a mode or value in connect or express to simulate slow file uploads??
Asked
Active
Viewed 1,352 times
9
-
3This has been asked before here: http://stackoverflow.com/questions/5999882/how-would-i-limit-upload-speed-from-the-server-in-node-js – Werner Kvalem Vesterås Oct 16 '12 at 16:45
1 Answers
2
First, 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 is a ReadableStream
:
var bucketStream = new BucketStream(1024 * 500, 'second'); // 500KB/sec
req.pipe(bucketStream);
Now read from bucketStream
(instead from req) as fast as you want, you'll only get 500KB/sec
I did this on top of my head so beware :)

Mike Gleason jr Couturier
- 9,018
- 4
- 40
- 59