最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Egg.js構(gòu)建一個stream流式接口服務實現(xiàn)詳解

 更新時間:2023年09月20日 14:15:34   作者:天問  
這篇文章主要為大家介紹了Egg.js構(gòu)建一個stream流式接口服務實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

經(jīng)常需要用到 stream 流式接口服務,比如:大文件下載、日志實時輸出等等。本文將介紹如何使用Egg.js構(gòu)建一個 stream 流式接口服務。

Egg.js Stream API

一、準備工作

目錄結(jié)構(gòu):

app/
    /controller
        index.js
        test.txt
        test.sh
  • index.js 控制器
  • test.txt 測試文件,最好是20M以上的文件,這樣才能看出流式返回的效果
  • test.sh 測試腳本,用于實時輸出日志的測試腳本

二、流式文件處理

  • controller/index.js 文件內(nèi)容如下:
'use strict';
const Controller = require('egg').Controller;
const { createReadStream } = require('fs');
const { join } = require('path');
class HomeController extends Controller {
  async testStream() {
    const { ctx } = this;
    ctx.set('Content-Type', 'text/plain; charset=utf-8');
    const stream = createReadStream(join(__dirname, './test.txt'));
    ctx.body = stream;
  }
}
module.exports = HomeController;

三、流式日志處理

  • controller/index.js 文件內(nèi)容如下:
'use strict';
const Controller = require('egg').Controller;
const { createReadStream } = require('fs');
const { join } = require('path');
const { spawn } = require('child_process');
class HomeController extends Controller {
  async testStream() {
    ctx.set('Content-Type', 'text/plain; charset=utf-8');
    const shPath = join(__dirname, './test.sh');
    const stream = spawn('sh', [ shPath ]);
    ctx.body = stream.stdout;
  }
}
module.exports = HomeController;
  • controller/test.sh 文件內(nèi)容如下:
#!/usr/bin/env sh
set -e
int=1
while(( $int<=10 ))
do
    echo $int
    sleep 2
    let "int++"
done

四、測試

前端使用 fetch 方法進行測試,為什么不用 axios ?因為 axios 是基于 XMLHttpRequest 的,不支持流式接口。 具體實現(xiàn)請參考:前端實現(xiàn) stream 流式請求

以上就是Egg.js構(gòu)建一個stream流式接口服務實現(xiàn)詳解的詳細內(nèi)容,更多關于Egg.js構(gòu)建stream流式接口服務的資料請關注腳本之家其它相關文章!

相關文章

  • js+div+css下拉導航菜單完整代碼分享

    js+div+css下拉導航菜單完整代碼分享

    本文主要分享了js+div+css下拉導航菜單的完整代碼。可直接復制保存到HTML文件就可以體驗效果。下面跟著小編一起來看下吧
    2016-12-12
  • JS實現(xiàn)圖片高斯模糊切換效果的焦點圖實例

    JS實現(xiàn)圖片高斯模糊切換效果的焦點圖實例

    這篇文章主要給大家介紹了利用原生JS如何實現(xiàn)圖片高斯模糊切換效果的焦點圖,文中給出了完整的實例代碼,相信對大家的理解和學習具有一定的參考借鑒價值,下面來一起看看吧。
    2017-01-01
  • js字符串轉(zhuǎn)換成xml對象并使用技巧解讀

    js字符串轉(zhuǎn)換成xml對象并使用技巧解讀

    在js中有方法可以將字符串轉(zhuǎn)化為xml對象,感興趣的朋友可以參考下面的代碼片段,希望對你有所幫助
    2013-04-04
  • 圖解js圖片輪播效果

    圖解js圖片輪播效果

    這篇文章主要以圖片展示的方式向大家講解了js圖片輪播效果的實現(xiàn)方法,對圖片輪播實現(xiàn)原理進行了詳細介紹,感興趣的朋友可以參考一下
    2015-12-12
  • js中精確計算加法和減法示例

    js中精確計算加法和減法示例

    這篇文章主要介紹了js中如何精確計算加法和減法,需要的朋友可以參考下
    2014-03-03
  • JS+Canvas實現(xiàn)滿屏愛心和文字動畫的制作

    JS+Canvas實現(xiàn)滿屏愛心和文字動畫的制作

    Canvas?適合繪制大數(shù)據(jù)量圖形元素的圖表(如熱力圖、地理坐標系或平行坐標系上的大規(guī)模線圖或散點圖等),也適合實現(xiàn)某些視覺特效。本文就來利用Canvas實現(xiàn)滿屏愛心和文字動畫的制作,感興趣的可以了解一下
    2022-11-11
  • stackoverflow常用工具庫總結(jié)

    stackoverflow常用工具庫總結(jié)

    這篇文章主要為大家介紹了stackoverflow常用工具庫總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • JavaScript數(shù)組的5種迭代方法

    JavaScript數(shù)組的5種迭代方法

    這篇文章主要為大家詳細介紹了JavaScript數(shù)組的5種迭代方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • JavaScript 中如何實現(xiàn)大文件并行下載

    JavaScript 中如何實現(xiàn)大文件并行下載

    本文將介紹如何利用 async-pool 這個庫提供的 asyncPool 函數(shù)來實現(xiàn)大文件的并行下載。
    2021-05-05
  • 解決layui動態(tài)加載復選框無法選中的問題

    解決layui動態(tài)加載復選框無法選中的問題

    今天小編就為大家分享一篇解決layui動態(tài)加載復選框無法選中的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09

最新評論

莱芜市| 工布江达县| 沅江市| 民和| 杭州市| 星子县| 鹤岗市| 襄垣县| 东台市| 无极县| 喜德县| 馆陶县| 耒阳市| 玉屏| 宁明县| 长岛县| 包头市| 舟曲县| 周宁县| 普定县| 山东| 沂水县| 宜章县| 澄城县| 天门市| 错那县| 磐石市| 万荣县| 佳木斯市| 沈丘县| 新昌县| 洪江市| 营山县| 蒙山县| 新龙县| 普定县| 息烽县| 新野县| 临猗县| 渭南市| 泰宁县|