nodejs Bigpipe 页面分割加载笔记

Bigpipe页面分割

项目中需要打印日志文件,因文件过大所以分割加载,以便将来改为持续输出加载

1、 在使用await前,系统自己结束了res输出,造成报错end after write,于是使用await停止当前resopnse结束,等待主动触发res.end(),才进入正常大页面分割输出
2、输出报错404,但是,文件已经触发了end,并正常返回,于是设置文件头writeHead status code为200 返回正常

/**
 * @name 日志文件打印
 */

app.use(router.get("/xxx",async (ctx,next)=>{

    let url = "./logs/logfile.log";
    let num = ctx.query["old"];
    if(num) url+="."+num

   //   设置文件头
    ctx.res.writeHead(200,{
        'Accept': 'text/plain',
        'Content-Type':'text/plain;charset=utf-8',
        'Transfer-Encoding' : 'chunked'
    })

    await (new Promise((resolve,reject)=>{

        let st = fs.createReadStream(url,{highWaterMark:10})
        st.setEncoding("utf8");

        st.on("data",d=>{
          ctx.res.write(d);
        })

        st.on("end",d=>{
          ctx.res.end();
        })
    }))   
    next();
}))

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.运行一个nodejs文件, 如一个js文件中只含有console.log("hello world");的文件...
    不忘初心_9a16阅读 5,993评论 0 8
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 2,611评论 1 37
  • 躲在烟灰缸后面, 从此刻开始,想你。 你在睡着,我在醒着。 情人节, 他们眼中的,男男女女。 对视中,或许不只是,...
    此事无关风月阅读 127评论 0 0
  • 今天我们又参加小班的活动。 我们的期喝点,跟以前一样都是在品胜门口。这次我们有车的,要开车不会这次的人会比较...
    驭帅阅读 699评论 0 0
  • 在所有前进的道路上如果没有国家作为坚实的后盾,就如同飞机失去了雷达;在所有拥有的东西中如果失去了自己的本心,就如同...
    大妃阅读 461评论 0 7

友情链接更多精彩内容