Node.js 流与背压:高并发下的稳健数据管道
在处理大文件或网络传输时,应优先采用流式方案,并正确应对背压。
// 文件复制:管道与背压
const fs = require('node:fs');
const rs = fs.createReadStream('in.dat');
const ws = fs.createWriteStream('out.dat');
rs.pipe(ws); // 自动处理背压
// 自行处理背压
rs.on('data', chunk => {
const canWrite = ws.write(chunk);
if (!canWrite) rs.pause();
});
ws.on('drain', () => rs.resume());