2012-10-16 147 views

回答

1

首先,安裝node-limiter然後創建一個Transform流,將油門任何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); 
    }); 
}; 

然後該請求是ReadableStream

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

現在從bucketStream讀取(而不是從REQ)只要你想,你只會得到500KB /秒

我沒有t他對我的頭頂上,所以要小心:)