我开始学习 NodeJS,流似乎是人们经常使用的东西。在我读过的大多数文档中都提到了处理大文件时发生的“背压问题”,但我还没有找到这个问题到底是什么的明确解释。我还读到使用管道可以帮助解决这个问题,但是管道到底如何解决背压问题呢?
感谢您提前的任何解释。
背压是指写入流的速度快于其他进程处理/消耗的速度
使用管道,您可以控制流、暂停和恢复流;
这是在nodejs中实现背压的示例
var http = require('http'),
fs = require('fs');
var server = http.createServer(function(request, response) {
var file = fs.createWriteStream('upload.jpg'),
fileBytes = request.headers['content-length'],
uploadedBytes = 0;
request.on('data', function(chunk) {
uploadedBytes += chunk.length;
var progress = (uploadedBytes / fileBytes) * 100;
response.write('progress: ' + parseInt(progress, 10) + '%\n');
var bufferOK = file.write(chunk);
if (!bufferOK) {
request.pause();
}
});
file.on('drain', function() {
request.resume();
});
request.on('end', function() {
response.end('upload complete\n');
});
});
server.listen(8080);
本·福斯特解决方案 - 来源:https://gist.github.com/benfoster/9543337 https://gist.github.com/benfoster/9543337
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)