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

vue流式接口的使用解讀(EventSource)

 更新時(shí)間:2025年12月16日 15:23:27   作者:qq_50949240  
文章主要介紹了如何使用EventSource和WebSocket進(jìn)行流式請求,以及如何主動關(guān)閉流式請求連接,同時(shí),文章還提到了流式接口的要求,包括攜帶請求頭的方法

一、EventSource

1.如果接口地址是http協(xié)議的,使用EventSource。如果是ws的,使用webSocket

2.主動關(guān)閉流式請求連接的方式:source.close()

3.參考鏈接:Websocket的用法及常見應(yīng)用場景

if (!!window.EventSource) {
          // 建立連接
          let source = new EventSource(window.config.baseURL + '/tsyp/stream?uuid=' + uuid);
          //連接一旦建立,就會觸發(fā)open事件
          source.onopen = function (event) {
          }
          //客戶端收到服務(wù)器發(fā)來的數(shù)據(jù)
          source.onmessage = function (event) {
            let data = event.data
            if (data == "AIQA_EOF") {
              source.close() //關(guān)閉請求的連接
            }
          }
          //如果發(fā)生通信錯(cuò)誤(比如連接中斷),就會觸發(fā)error事件
          source.onerror = function (event) {
            console.error('EventSource failed:', event);
          }
        } else {
          console.warn("你的瀏覽器不支持SSE");
        }

二、流式接口要求攜帶請求頭

1.可以使用封裝的EventSourcePolyfill。(此方法只能用get請求)

但注意:

EventSourcePolyfill發(fā)送的請求可以攜帶請求頭,但是只能是get請求

 async putQuestion(query) {
        let that = this
        // 建立連接
        let source = new EventSourcePolyfill(`/eventSourceFill/chat/conversation/stream`,
          {
            withCredentials: true,
            headers: {
              "Content-Type": "application/json",
              Authorization: 'Bearer ' + getToken(),
              connection: "keep-alive",
            }
          });
        //連接一旦建立,就會觸發(fā)open事件
        source.onopen = function (event) {
          source.send('Authorization: Bearer ' + getToken());
          console.log("連接建立成功")
        }
        //客戶端收到服務(wù)器發(fā)來的數(shù)據(jù)
        source.onmessage = function (event) {
          let data = event.data
          console.log("data:", data)
          if (data == "AIQA_EOF") {
            source.close()
          } else {

          }
        }
        //如果發(fā)生通信錯(cuò)誤(比如連接中斷),就會觸發(fā)error事件
        source.onerror = function (event) {
          console.error('EventSource failed:', event);
        }
      },

2.請求要求攜帶請求頭(post、get請求均可)

async sendRequest(query) {
        let controller = new AbortController();
        let {signal} = controller;
        //controller.abort() 用于取消fetch接口請求
        this.cancel_QA = controller
        //使用fetch發(fā)送請求
        const response = await fetch('http://****/chat/conversation/stream', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer ' + getToken()
          },
          body: JSON.stringify(query),
          signal
        });
        // 檢查響應(yīng)是否成功
        if (!response.ok) {
          console.error('網(wǎng)絡(luò)響應(yīng)失敗:', response.statusText);
          return;
        }
        // 獲取響應(yīng)體的可讀流
        const reader = response.body.getReader();
        const decoder = new TextDecoder('utf-8');
        // 逐塊讀取數(shù)據(jù)
        while (true) {
          const {done, value} = await reader.read();
          if (done) break; // 流結(jié)束
          let msg = decoder.decode(value, {stream: true})
          if (msg.includes("LLM-EOF")) {
            console.warn("回答結(jié)束")
            this.cancel_QA = null
          } else {
          }
        }
      },

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue3父組件調(diào)用子組件的方法例子

    vue3父組件調(diào)用子組件的方法例子

    這篇文章主要給大家介紹了關(guān)于vue3父組件調(diào)用子組件的方法例子,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-07-07
  • element自定義 多文件上傳 觸發(fā)多次on-change問題

    element自定義 多文件上傳 觸發(fā)多次on-change問題

    這篇文章主要介紹了element自定義 多文件上傳 觸發(fā)多次on-change問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue之beforeEach非登錄不能訪問的實(shí)現(xiàn)(代碼親測)

    Vue之beforeEach非登錄不能訪問的實(shí)現(xiàn)(代碼親測)

    這篇文章主要介紹了Vue之beforeEach非登錄不能訪問的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • vue項(xiàng)目base64加解密使用方式以及解密亂碼

    vue項(xiàng)目base64加解密使用方式以及解密亂碼

    這篇文章主要介紹了vue項(xiàng)目base64加解密使用方式以及解密亂碼問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 一次VUE項(xiàng)目中遇到XSS攻擊的實(shí)戰(zhàn)記錄

    一次VUE項(xiàng)目中遇到XSS攻擊的實(shí)戰(zhàn)記錄

    XSS?攻擊是頁面被注入了惡意的代碼,下面這篇文章主要給大家介紹了一次VUE項(xiàng)目中遇到XSS攻擊的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • vue大型項(xiàng)目之分模塊運(yùn)行/打包的實(shí)現(xiàn)

    vue大型項(xiàng)目之分模塊運(yùn)行/打包的實(shí)現(xiàn)

    這篇文章主要介紹了vue大型項(xiàng)目之分模塊運(yùn)行/打包的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Vue中用props給data賦初始值遇到的問題解決

    Vue中用props給data賦初始值遇到的問題解決

    這篇文章主要介紹了Vue中用props給data賦初始值遇到的問題解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • element?select必填項(xiàng)驗(yàn)證回顯問題的解決

    element?select必填項(xiàng)驗(yàn)證回顯問題的解決

    本文主要介紹了element?select必填項(xiàng)驗(yàn)證回顯問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 使vue實(shí)現(xiàn)jQuery調(diào)用的兩種方法

    使vue實(shí)現(xiàn)jQuery調(diào)用的兩種方法

    這篇文章主要介紹了使vue實(shí)現(xiàn)jQuery調(diào)用的兩種方法 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Vue3動態(tài)倒計(jì)時(shí)的代碼實(shí)現(xiàn)

    Vue3動態(tài)倒計(jì)時(shí)的代碼實(shí)現(xiàn)

    在使用Vue框架開發(fā)Web應(yīng)用時(shí),倒計(jì)時(shí)功能是一個(gè)常見的需求,它可以在一定時(shí)間內(nèi)重復(fù)執(zhí)行某些操作,比如防止用戶重復(fù)提交表單、限制投票次數(shù)、實(shí)現(xiàn)驗(yàn)證碼獲取等功能,所以本文給大家介紹了Vue3動態(tài)倒計(jì)時(shí)的代碼實(shí)現(xiàn),需要的朋友可以參考下
    2024-09-09

最新評論

巴塘县| 海南省| 高平市| 溧水县| 屯门区| 桑日县| 合川市| 上犹县| 定结县| 巨鹿县| 金阳县| 南靖县| 佛教| 新安县| 建湖县| 梅州市| 洪江市| 穆棱市| 北安市| 新巴尔虎右旗| 扎兰屯市| 孟州市| 彰化市| 凤山县| 花垣县| 门源| 皮山县| 五原县| 琼中| 贵德县| 山丹县| 新竹市| 虎林市| 卢氏县| 武定县| 西充县| 兴和县| 当阳市| 永平县| 盐边县| 五河县|