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

Vue+(SSE)EventSource實現(xiàn)流式輸出過程

 更新時間:2025年12月16日 09:36:54   作者:李李...  
文章介紹了如何在Vue項目中使用EventSource和FetchEventSource實現(xiàn)服務(wù)器端事件驅(qū)動推送,并分享了它們的特點、優(yōu)勢以及使用流程,通過設(shè)置請求頭和請求方式,解決了EventSource無法設(shè)置這些屬性的問題

重要的事情前面說,如果你使用的是vue,那么為了可以流式輸出,必須關(guān)閉下面這個東西,這是我踩坑2個小時發(fā)現(xiàn)的: compress: false,這個必須設(shè)置,不然接受服務(wù)端響應(yīng)還是一大段內(nèi)容返回。

下面介紹一下EventSource

EventSource是HTML5中的一個API,用于實現(xiàn)服務(wù)器端的事件驅(qū)動推送SSE(Server-Sent Events)。

它允許服務(wù)器實時地向客戶端發(fā)送事件和數(shù)據(jù),而不需要客戶端不斷地向服務(wù)器發(fā)起請求。

EventSource的特點和優(yōu)勢包括

  • 1. 簡單易用:使用EventSource只需要幾行代碼即可建立連接和監(jiān)聽事件。
  • 2. 自動重連:EventSource會自動嘗試重新連接服務(wù)器,即使網(wǎng)絡(luò)斷開或服務(wù)器重啟,客戶端也會自動恢復(fù)連接。
  • 3. 單向通信:EventSource只支持服務(wù)器向客戶端的單向通信,不支持客戶端向服務(wù)器發(fā)送數(shù)據(jù),因此更適合服務(wù)器主動推送信息給客戶端。
  • 4. 長連接:EventSource使用長連接,減少了頻繁的請求和響應(yīng),降低了網(wǎng)絡(luò)開銷和服務(wù)器負載。

但是EventSource有一個缺點就是沒法設(shè)置請求頭信息和請求方式,EventSource只支持Get請求,我翻了一下CSDN找到了解決方案,使用FetchEventSource。

FetchEventSource 是一個 JavaScript 庫,用于從服務(wù)器或其他源獲取事件流數(shù)據(jù)。它是基于 Fetch API,提供了一種簡單和靈活的方式來處理服務(wù)器發(fā)送的事件流數(shù)據(jù)。

使用 fetchEventSource,您可以設(shè)置一個事件回調(diào)函數(shù),用于處理從服務(wù)器發(fā)送的事件。當(dāng)服務(wù)器發(fā)送新的事件時,該回調(diào)函數(shù)將被觸發(fā),并且您可以在回調(diào)函數(shù)中執(zhí)行相應(yīng)的操作。

FetchEventSource 還提供了一些方法來管理事件流的連接狀態(tài),例如打開連接、關(guān)閉連接、重新連接等。它還支持設(shè)置請求頭、查詢參數(shù)等功能,以滿足不同的需求。

現(xiàn)在我來介紹一下使用流程

1.安裝庫

npm install fetch-event-source

2.導(dǎo)入函數(shù)

import { fetchEventSource } from '@microsoft/fetch-event-source'

3.創(chuàng)建請求連接(并支持設(shè)置請求頭,請求方式)

 this.eventSource = await fetchEventSource(url, {
            // 這里設(shè)置請求頭信息
            headers: {
              'Authorization': 'Bearer ' + localStorage.getItem('token')
            },
})

4.監(jiān)聽連接

5.監(jiān)聽服務(wù)端返回數(shù)據(jù)

6.監(jiān)聽服務(wù)端錯誤

7.監(jiān)聽服務(wù)端關(guān)閉

這里有個屬性openWhenHidden: true 是指瀏覽器頁簽不處于活躍時仍然可以輸出信息。

8.請求SSE

const urlWithUuid = `/api/map/houseproperty/createSse?uuid=${encodeURIComponent(uuid)}`
this.sseRequest(urlWithUuid) // 使用帶有UUID的URL進行SSE請求

至此,頁面就可以像GPT一樣流式輸出信息了。

結(jié)果如下:

已經(jīng)可以完成流式輸出信息了。

總結(jié)

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

相關(guān)文章

  • vue監(jiān)聽scroll的坑的解決方法

    vue監(jiān)聽scroll的坑的解決方法

    這篇文章主要介紹了vue監(jiān)聽scroll的坑的解決方法,現(xiàn)在分享給大家,也給大家做個參考,希望給有同樣經(jīng)歷的人幫助
    2017-09-09
  • vue實現(xiàn)zip文件下載

    vue實現(xiàn)zip文件下載

    這篇文章主要為大家詳細介紹了vue實現(xiàn)zip文件下載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue3中動態(tài)組件的踩坑記錄分享

    vue3中動態(tài)組件的踩坑記錄分享

    這篇文章主要為大家詳細分享一下vue3中動態(tài)組件遇到的問題,分別是動態(tài)組件綁定問題和動態(tài)組件的方法導(dǎo)出問題,有需要的小伙伴可以參考一下
    2024-12-12
  • Vue密碼登陸加密RSA實現(xiàn)方案

    Vue密碼登陸加密RSA實現(xiàn)方案

    這篇文章主要介紹了Vue密碼登陸加密RSA實現(xiàn)方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • vue項目根據(jù)不同環(huán)境進行設(shè)置打包命令的方法

    vue項目根據(jù)不同環(huán)境進行設(shè)置打包命令的方法

    這篇文章主要介紹了vue項目根據(jù)不同環(huán)境進行設(shè)置打包命令,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • Vue加載組件、動態(tài)加載組件的幾種方式

    Vue加載組件、動態(tài)加載組件的幾種方式

    組件是Vue.js最強大的功能之一。組件可以擴展HTML元素,封裝可重用的代碼。這篇文章通過實例代碼給大家介紹了Vue加載組件、動態(tài)加載組件的幾種方式,需要的朋友參考下吧
    2018-08-08
  • vue3中定時任務(wù)cron表達式組件的比較分析

    vue3中定時任務(wù)cron表達式組件的比較分析

    文章比較了三種適用于Vue3的cron組件:vue3-cron-plus、no-vue3-cron和vue3-cron-plus-picker,每種組件的安裝和使用實例都詳細列出,最終對比發(fā)現(xiàn),vue3-cron-plus-picker不僅可以從組件中獲取cron表達式,還能顯示任務(wù)的執(zhí)行時間,因此推薦使用
    2025-10-10
  • Vue通過v-for實現(xiàn)年份自動遞增

    Vue通過v-for實現(xiàn)年份自動遞增

    這篇文章主要為大家詳細介紹了Vue通過v-for實現(xiàn)年份自動遞增,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Vue中如何使用mock模擬數(shù)據(jù)

    Vue中如何使用mock模擬數(shù)據(jù)

    這篇文章主要介紹了Vue中如何使用mock模擬數(shù)據(jù),具有很好的價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue中ref的用法及演示

    Vue中ref的用法及演示

    這篇文章主要介紹了Vue中ref的用法及演示,ref被用來給元素或子組件注冊引用信息。引用信息會被注冊在父組件上的$refs對象上,下面來看看文章的詳細內(nèi)容,需要的朋友可以參考一下
    2021-11-11

最新評論

普陀区| 突泉县| 正蓝旗| 含山县| 景宁| 津市市| 姚安县| 六安市| 平安县| 沽源县| 镇赉县| 法库县| 师宗县| 莱阳市| 锡林郭勒盟| 海安县| 九寨沟县| 新化县| 蒙阴县| 武义县| 闵行区| 澜沧| 大石桥市| 金塔县| 庆云县| 和平区| 长寿区| 紫金县| 黑水县| 苍山县| 安泽县| 墨脱县| 文昌市| 西城区| 宁乡县| 兴安盟| 康定县| 洛隆县| 馆陶县| 兰考县| 新乡市|