成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
本地運行的環境也是用的代理訪問的部署好的環境的接口。插件是 Node.js 的 HTTP 代理中間件??http-proxy-middleware??。所以為何同樣的配置,本地運行不行,而部署到環境上就正常了?有大佬遇到過嗎

前言

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

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

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

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

EventSource

創建EventSource對象:首先,使用new EventSource()構造函數創建一個EventSource對象。該對象將用于與服務器建立連接并接收服務器發送的事件流。

var eventSource = new EventSource('sse_url');

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

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

錯誤處理:為了處理可能發生的錯誤,可以使用EventSource對象的onerror事件監聽器。當發生錯誤時,可以在事件處理函數中進行處理。

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

關閉連接:當不再需要接收事件流時,可以使用EventSource對象的close方法關閉連接。

eventSource.close();

完整的示例代碼如下所示:

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請求,配置請求頭也不太友好。

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實現的,網上例子很多,可以看看。

問題

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

責任編輯:武曉燕 來源: 海燕技術棧
相關推薦

2021-06-06 16:15:57

地區接口項目

2011-11-25 13:04:43

空格usr

2021-07-27 07:12:11

Getter接口Setter

2019-09-19 14:28:14

程序員分布式系統

2010-11-04 09:11:34

Fedora 14評測

2013-12-19 09:58:36

移動應用產品市場

2021-12-01 06:59:27

架構

2011-04-27 10:02:54

兼容墨盒用戶體驗

2021-07-24 13:11:19

Redis數據技術

2024-08-20 21:27:04

docker部署容器

2023-11-20 08:32:50

HTTP協議

2018-11-22 15:50:27

MySQL數據庫雙引號

2011-08-18 10:03:57

NoSQL初創公司適用

2021-01-25 08:08:22

APP機器人KOB

2017-05-22 08:35:07

MySQL雙引號錯位

2021-02-01 10:42:47

MySQL雙引號數據庫

2024-04-01 00:05:00

ChatGPTSSE

2010-02-25 15:22:02

2016-10-31 10:38:12

潤乾蔣步星數據計算

2016-10-31 13:31:17

數據計算課題
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91久久爽久久爽爽久久片 | 日韩亚洲欧美综合 | 午夜电影网址 | 国产精品高清一区二区 | 97伦理最新伦理 | 中文字幕一级 | 欧美a级成人淫片免费看 | 国产成人一区 | 欧美午夜一区二区三区免费大片 | 国产精品国产 | 国产一区2区 | 亚洲精品在线免费 | 国产乱码精品一区二区三区中文 | 亚洲午夜电影 | 成人av一区 | 成人av鲁丝片一区二区小说 | 一级黄色在线 | 狠狠干天天干 | 免费视频一区 | 久久国产一区二区三区 | 9色视频在线 | 一区二区三区视频免费观看 | 久久久亚洲 | 久久亚洲一区二区三区四区 | 亚洲一二三在线观看 | 国产91丝袜在线播放 | 性色视频| 午夜免费网站 | 久久久久久久久91 | 日本在线精品视频 | 国精久久 | 亚洲三区视频 | 中文字幕 欧美 日韩 | 伊人网一区 | 国外成人在线视频 | 欧美一区二区 | 久久久久久久综合色一本 | 一本一道久久a久久精品蜜桃 | 久久久久久国产 | 久久久久中文字幕 | 韩日一区二区三区 |