Expressjs/connect - 模拟缓慢文件上传

9
有没有一种在Connect或Express中设置模式或值以模拟缓慢的文件上传的方法?

3
这个问题之前已经在这里提过了:https://dev59.com/9m025IYBdhLWcg3wclm- - Werner Kvalem Vesterås
1个回答

2

首先,安装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 /秒

我是凭感觉做的,所以小心 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接