vue实现post请求接口流式输出数据sse

使用fetchEventSource

参考git源码:https://github.com/Azure/fetch-event-source/tree/main

本地联通 发现数据并没有流式输出:vue代理需要关闭compress

如下:

javascript 复制代码
devServer:{

     proxy:{},

     compress:false 

}

安装插件

javascript 复制代码
npm install @microsoft/fetch-event-source

引入插件

javascript 复制代码
import { fetchEventSource } from "@microsoft/fetch-event-source";

vue关键代码:

javascript 复制代码
connectSse(){
      const ctrl = new AbortController();
      fetchEventSource('/api/v1/sse',{
        method: 'POST',
        mode: 'no-cors',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({data:[this.searchData]}),
        signal: ctrl.signal,
        onopen(response){
          // 成功连接时回调
          console.log('连接成功',response)
        },
        onmessage(msg) {
          // 服务器返回消息回调 返回{ data,event,id,retry } ,data即服务器返回数据


          if (msg.event == '') {
            // 进行连接正常的操作流程
            let result = JSON.parse(msg.data)
            // 将需要展示的数据更新到vue的data中,当然如下this.showData肯定赋值不上,需要将this 指向一个变量,用变量接受数据即可,以下只是展示
            this.showData += result.content
          }

          if (msg.event === 'close') {
            ctrl.abort()
          }
        },
        onerror(err) {
          throw new err()
        }
      })
    },

研发阶段 需要配置nginx

相关推荐
香蕉可乐荷包蛋22 分钟前
vue对axios的封装和使用
前端·javascript·vue.js·axios
架构个驾驾1 小时前
Vue3 状态管理新选择:Pinia 完全指南与实战示例
前端·javascript·vue.js
空城机1 小时前
从零打造前沿Web聊天组件:@成员和表情包设计实现
前端·vue.js
秋田君1 小时前
Vue3 + Vite:我的 Qiankun 微前端主子应用实践指南
前端·vue.js·前端框架
xd000022 小时前
9.axios底层原理,和promise的对比(2)
vue.js
Dignity_呱2 小时前
别在傻傻分不清any void never unknown的场景啦
前端·vue.js·typescript
入行IT两年半3 小时前
element-plus 单选组件 el-radio,选不上,又没报错,直接复制官网也不行解决方案
前端·vue.js·elementui
wxid:yiwoxuan4 小时前
购物商城网站 Java+Vue.js+SpringBoot,包括商家管理、商品分类管理、商品管理、在线客服管理、购物订单模块
java·vue.js·spring boot·课程设计
用户4718559996175 小时前
在vue项目中引入iconfont的字体图标
vue.js
仔仔 v1.05 小时前
解决Vue3+uni-app导航栏高亮自动同步方案
前端·javascript·vue.js