//服务端处理请求的代码:
const fs = require('fs');
const readline = require('readline');
async getLog(req, res) {
const _this = this;
try {
const { createReadStream } = fs;
const log = '/opt/example.log'; // log 大小:40MB
const readStream = createReadStream(log);
const rl = readline.createInterface(readStream, res);
rl.on("close", () => {
console.log("end");
readStream.close();
res.end();
});
} catch (e) {
logger.error("获取log失败", e);
res.json(_this.fail(ERROR_PARAMETER, "获取日志失败,请稍后重试"));
}
}
//浏览器fetch代码:
fetch(getLog)
.then(async response => {
const reader = response.body.getReader();
do {
let { done, value } = await reader.read();
console.log(value); //这里获取的只有一个undefined
if (done) {
break;
}
} while (true);
})
.catch(e => {
console.error(e);
});