AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

一個SSE(流式)接口引發的問題

來源: 責編: 時間:2024-02-29 14:41:37 206觀看
導讀前言最近我們公司也是在做認知助手,大模型相關的功能,正在做提示詞,機器人對話相關功能。想要提高用戶體驗,使用SSE請求模式,在不等數據完全拿到的情況下邊拿邊返回。之前做過一版,但不是流式返回,是等待全部結果再返回,不得

前言

最近我們公司也是在做認知助手,大模型相關的功能,正在做提示詞,機器人對話相關功能。想要提高用戶體驗,使用SSE請求模式,在不等數據完全拿到的情況下邊拿邊返回。iW028資訊網——每日最新資訊28at.com

之前做過一版,但不是流式返回,是等待全部結果再返回,不得不說確實等待過程挺長,然后就有了現在的優化。想著功能都寫好了,只是改一下接口,應該是個簡單的需求。iW028資訊網——每日最新資訊28at.com

后端使用的post接口,經過一番搜索,最后使用的fetch。經過短短幾個小時,配置寫好,準備聯調,以為需求就順利完工了。奈何就這流式聯調,還耗了兩天。只因為后端在postman上測試時正常的,然后前端在本地連調就是無法獲取分段式數據,拿到的總是一整塊數據。表現成這樣,我們就開始糾結前端配置是否有誤,網關轉發是否有誤。iW028資訊網——每日最新資訊28at.com

就這樣前端也試了好幾種方式去發請求,奈何結果都一樣。想著先測其他部分,這個接口最后測試。意外的是部署在線上的環境竟然能正常接收流式接口!??!那問題可能就是本地與部署線上的區別了,今天主要記錄一下使用的配置。iW028資訊網——每日最新資訊28at.com

EventSource

創建EventSource對象:首先,使用new EventSource()構造函數創建一個EventSource對象。該對象將用于與服務器建立連接并接收服務器發送的事件流。iW028資訊網——每日最新資訊28at.com

var eventSource = new EventSource('sse_url');

在上面的代碼中,將'sse_url'替換為實際的SSE請求URL。2. 監聽事件:使用EventSource對象的onmessage事件監聽器來接收服務器發送的事件數據。當接收到數據時,事件處理函數將被調用,并可以通過事件對象的data屬性訪問數據。iW028資訊網——每日最新資訊28at.com

eventSource.onmessage = function(event) {    console.log('Received data:', event.data);  };

錯誤處理:為了處理可能發生的錯誤,可以使用EventSource對象的onerror事件監聽器。當發生錯誤時,可以在事件處理函數中進行處理。iW028資訊網——每日最新資訊28at.com

eventSource.onerror = function(error) {    console.error('SSE error:', error);  };

關閉連接:當不再需要接收事件流時,可以使用EventSource對象的close方法關閉連接。iW028資訊網——每日最新資訊28at.com

eventSource.close();

完整的示例代碼如下所示:iW028資訊網——每日最新資訊28at.com

var eventSource = new EventSource('sse_url');    eventSource.onmessage = function(event) {    console.log('Received data:', event.data);  };    eventSource.onerror = function(error) {    console.error('SSE error:', error);  };

但是EventSource只支持get請求,配置請求頭也不太友好。iW028資訊網——每日最新資訊28at.com

fetch

async function getStream() {  try {    let response = await fetch('url');    if (!response.ok) {      throw new Error('Network response was not ok');    }       const reader = response.body.getReader();    const textDecoder = new TextDecoder();    let result = true;    let output = ''    while (result) {        const { done, value } = await reader.read();      if (done) {        console.log('Stream ended');       result = false;       break;      }      const chunkText = textDecoder.decode(value);      output += chunkText;      console.log('Received chunk:', chunkText);    }  } catch (e) {    console.log(e); }}

插件

@microsoft/fetch-event-source 使用方法我就 不放了,看了一下源碼也是基于fetch實現的,網上例子很多,可以看看。iW028資訊網——每日最新資訊28at.com

問題

本地運行的環境也是用的代理訪問的部署好的環境的接口。插件是 Node.js 的 HTTP 代理中間件http-proxy-middleware。所以為何同樣的配置,本地運行不行,而部署到環境上就正常了?有大佬遇到過嗎iW028資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-75325-0.html一個SSE(流式)接口引發的問題

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 一次性學會Java中的日志

下一篇: 系統設計面試問題:如何設計 Spotify,一個音樂流媒體系統

標簽:
  • 熱門焦點
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • 把LangChain跑起來的三個方法

    使用LangChain開發LLM應用時,需要機器進行GLM部署,好多同學第一步就被勸退了,那么如何繞過這個步驟先學習LLM模型的應用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 小紅書1周漲粉49W+,我總結了小白可以用的N條漲粉筆記

    作者:黃河懂運營一條性教育視頻,被54萬人“珍藏”是什么體驗?最近,情感博主@公主是用鮮花做的,火了!僅僅憑借一條視頻,光小紅書就有超過128萬人,為她瘋狂點贊!更瘋狂的是,這
  • Temu起訴SHEIN,跨境電商戰事升級

    來源 | 伯虎財經(bohuFN)作者 | 陳平安日前據外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein“利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的“網紅”。7月5日至9日,為期5天的東方甄選“甘肅行”首次在自有App內直播,
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進展,其中榮耀、三星都已陸續發布了最新的折疊屏旗艦,尤其號榮耀Magi
  • 蘋果140W USB-C充電器:采用氮化鎵技術

    據10 月 30 日 9to5 Mac 消息報道,當蘋果推出新的 MacBook Pro 2021 時,該公司還推出了新的 140W USB-C 充電器,附贈在 MacBook Pro 16 英寸機型的盒子里,也支
  • 北京:科技教育體驗基地開始登記

      北京“科技館之城”科技教育體驗基地登記和認證工作日前啟動。首批北京科技教育體驗基地擬于2023年全國科普日期間掛牌,后續還將開展常態化登記。  北京科技教育體驗基
Top