nodejs Bigpipe 頁面分割加載筆記

Bigpipe頁面分割

項目中需要打印日志文件,因文件過大所以分割加載,以便將來改為持續(xù)輸出加載

1、 在使用await前,系統(tǒng)自己結束了res輸出,造成報錯end after write,于是使用await停止當前resopnse結束,等待主動觸發(fā)res.end(),才進入正常大頁面分割輸出
2、輸出報錯404,但是,文件已經觸發(fā)了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();
}))

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1.運行一個nodejs文件, 如一個js文件中只含有console.log("hello world");的文件...
    不忘初心_9a16閱讀 6,055評論 0 8
  • 個人入門學習用筆記、不過多作為參考依據(jù)。如有錯誤歡迎斧正 目錄 簡書好像不支持錨點、復制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,655評論 1 37
  • 躲在煙灰缸后面, 從此刻開始,想你。 你在睡著,我在醒著。 情人節(jié), 他們眼中的,男男女女。 對視中,或許不只是,...
    此事無關風月閱讀 129評論 0 0
  • 今天我們又參加小班的活動。 我們的期喝點,跟以前一樣都是在品勝門口。這次我們有車的,要開車不會這次的人會比較...
    馭帥閱讀 706評論 0 0
  • 在所有前進的道路上如果沒有國家作為堅實的后盾,就如同飛機失去了雷達;在所有擁有的東西中如果失去了自己的本心,就如同...
    大妃閱讀 464評論 0 7

友情鏈接更多精彩內容