2012-10-16 35 views
8

Có cách nào để đặt chế độ hoặc giá trị trong kết nối hoặc thể hiện để mô phỏng tải lên tệp chậm không ??Expressjs/connect - Mô phỏng tải lên tệp chậm

+2

Điều này đã được hỏi trước đây: http://stackoverflow.com/questions/5999882/how-would-i-limit-upload-speed-from-the-server- in-node-js –

Trả lời

1

Đầu tiên, cài đặt node-limiter sau đó tạo ra một dòng Transform mà sẽ tăng tốc bất kỳ 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); 
    }); 
}; 

Sau đó, theo yêu cầu là một ReadableStream:

var bucketStream = new BucketStream(1024 * 500, 'second'); // 500KB/sec 
req.pipe(bucketStream); 

Bây giờ đọc từ bucketStream (thay vì từ req) nhanh như bạn muốn, bạn sẽ chỉ nhận được 500KB/giây

Tôi đã làm trên đầu của tôi để hãy cẩn thận :)

Các vấn đề liên quan