fetchEvent流式响应vue3

window中有一个叫EventSource的构造函数。一个EventSource实例会对服务器开启一个持久化的连接,以text/event-stream格式发送事件,此连接会一直保持开启直到通过调用EventSource.close()关闭。但使用EventSource时只能把参数加到url后面,而且也不能像fetch请求那样设置header等参数。借助fetch-event-source这个库就可以像发起fetch请求一样发起服务器单向通信请求。

对接AI的api,返回的数据是流式的,后台不好转,前端项目vue3
使用 @microsoft/fetch-event-source,实现fetchEvent 的post传送

fetch-event-source使用

 await fetchEventSource(url, {
   
        method: "POST",
        headers: {
   
          "Content-Type": "application/json; charset=utf-8",
          "Accept": "text/event-stream",
          "Authorization": `Bearer XXXX`,
          "Transfer-Encoding": "chunked",
        },
        body: JSON.stringify(params),
        signal: cancelTokenSourceRef.current.signal,
        onopen(response) {
     // 成功建立连接
          },
        onmessage(msg) {
    // 接收信息
			// 这里接收数据处理业务逻辑
			 const result = JSON.parse(msg.data);
			 if (result.event === "message") {
   
}else if (result.event === "message_end"){
   
console.log("回答完毕");}
},  // 接收信息
        onerror(err) {
   
          console.error("发生错误", err);
          throw err;
        },
        onclose(res) {
   
          console
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值