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

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

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

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

下面介紹一下EventSource

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

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

EventSource的特點(diǎn)和優(yōu)勢(shì)包括

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

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

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

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

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

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

1.安裝庫(kù)

npm install fetch-event-source

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

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

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

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

4.監(jiān)聽(tīng)連接

5.監(jiān)聽(tīng)服務(wù)端返回?cái)?shù)據(jù)

6.監(jiān)聽(tīng)服務(wù)端錯(cuò)誤

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

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

8.請(qǐng)求SSE

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

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

結(jié)果如下:

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Vue通過(guò)v-for實(shí)現(xiàn)年份自動(dòng)遞增

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

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

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

    Vue中ref的用法及演示

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

最新評(píng)論

砀山县| 安义县| 当阳市| 三河市| 荣成市| 天柱县| 垫江县| 崇仁县| 朝阳市| 桂林市| 改则县| 忻州市| 上杭县| 连南| 拜城县| 旅游| 金华市| 泉州市| 浙江省| 浪卡子县| 镇坪县| 长泰县| 洞头县| 略阳县| 江达县| 库伦旗| 会理县| 乌拉特中旗| 顺义区| 航空| 芜湖市| 永福县| 东乌珠穆沁旗| 桃源县| 冀州市| 尉氏县| 姚安县| 广安市| 西和县| 安乡县| 滦平县|