有没有一种在Connect或Express中设置模式或值以模拟缓慢的文件上传的方法?
首先,安装node-limiter
,然后创建一个Transform
流,以限制任何Stream
的速度:
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);
});
};
那么请求就是一个 ReadableStream
:
var bucketStream = new BucketStream(1024 * 500, 'second'); // 500KB/sec
req.pipe(bucketStream);
现在从bucketStream
中读取(而不是从req中),速度越快,你只能获得500KB /秒
我是凭感觉做的,所以小心 :)