Node.js限制stream

我正在尝试创build一个Node.js HTTP文件stream媒体服务器。 我想要做到以下几点:

发件人--HTTP POST--> HTTP --HTTP POST--> Node.js HTTP服务器<--HTTP GET--收件人

我已经使用下面的代码:

 var app = express(); // ... app.post('/upload', function (req, res) { // Get the `req` and `res` arguments of the HTTP GET request var downloadRequest = getDownloadClientRequest(); // parse a file upload var form = new formidable.IncomingForm(); form.onPart = function (part) { if (!part.filename) { // let formidable handle all non-file parts form.handlePart(part); return; } downloadRequest.res.writeHead(200, { 'Content-Disposition': 'attachment; filename=' + part.filename }); part.on('data', function(data) { downloadRequest.res.write(data); }); part.on('end', function() { downloadRequest.res.end(); }); }; form.parse(req, function (err, fields, files) { res.writeHead(200); res.write('Successfully streamed'); res.end(); }); }); app.get('/download', function (req, res) { storeDownloadClientRequest(req, res); }); 

显而易见的是,如果上传客户端比下载客户端快得多,上传速度非常快,我的Node.js进程将整个文件保存在内存中,直到下载客户端完成。

我怎样才能调节上传者的速度? 我想我可以暂时停止他的stream,但我怎么知道下载器的stream/缓冲区是否填满?

PS:我扼杀了下载客户端wget --limit-rate=100k ,如果有帮助。

当缓冲区满时, part.pipe(downloadRequest)应该自动处理暂停/恢复。