当前位置: 首页 > news >正文

web前端sse封装

这是一个基于@microsoft/fetch-event-source包封装的sse函数,包含开始、停止功能; 可传更多参数、使用非常简单。

使用前: 

        安装 @microsoft/fetch-event-source

代码:


// sse
import { fetchEventSource } from '@microsoft/fetch-event-source'
import { getUserJWTtoken } from '@/utils/auth' // 引入你自己的Authorization// 参数处理
const factory = (options) => ((options.method = options.method || 'POST'),(options.headers = options.headers || {'Content-Type': 'application/json',Authorization: getUserJWTtoken(),}),(options.body = options.body || {}),options
)
let controller = null
// 参数处理
export default function () {return {// 开始ssestart: async (url, options = {}, callback) => {try {if (!url) {console.log('请输入有效url')return}controller = new AbortController()const signal = controller.signalawait fetchEventSource(url, {signal: signal,...factory(options),openWhenHidden: true,onmessage(event) {callback({ status: 'running', message: event })},onerror(error) {throw error // 必须抛出错误,否则停止不了},onclose(msg) {callback({ status: 'finish', message: '读取结束' })},})} catch (error) {callback({ status: 'error', message: error })}},// 停止ssestop: () => {controller?.abort()},}
}

使用:

<template><a-button @click="startSSE">开始sse</a-button><a-button @click="stopSSE">停止sse</a-button>
</template><script setup>
import sseHook from "./sse";const sse = sseHook();const startSSE = () => {const params = {params1: "params1",params2: "params2",params3: "params3"};/*三个参数1. url 你的sse对应的后端接口2. params 你的入参 必须是json字符串3. 回调函数(运行状态, 返回信息)*/sse.start(url, { body: JSON.stringify(params) }, ({ status, message }) => {console.og(status, message);});
};const stopSSE = () => {sse.stop();
};
</script>

http://www.lryc.cn/news/502941.html

相关文章:

  • 智能家居WTR096-16S录放音芯片方案,实现语音播报提示及录音留言功能
  • 【创建模式-蓝本模式(Prototype Pattern)】
  • Spring Boot应用开发深度解析与实战案例
  • 优化Go语言中的网络连接:设置代理超时参数
  • 《神经网络与深度学习》(邱锡鹏) 内容概要【不含数学推导】
  • 原创 传奇996_55——后端如何点击npc隐藏主界面
  • RabbitMQ中的Work Queues模式
  • GESP202412 四级【Recamán】题解(AC)
  • 蓝桥杯新年题解 | 第15届蓝桥杯迎新篇
  • 3D 生成重建035-DiffRF直接生成nerf
  • @SpringBootTest 报错: UnsatisfiedDependencyException
  • mysql、postgresql、oceanbase调优
  • MySQL 数据库事务实践
  • VScode、Windsurf、Cursor 中 R 语言相关快捷键设置
  • tcpdump编译
  • Linux下禁止root远程登录访问
  • 算法刷题Day16: BM41 输出二叉树的右视图
  • 登录授权的实现:json web token + redis + springboot
  • yolov,coco,voc标记的睡岗检测数据集,可识别在桌子上趴着睡,埋头睡觉,座椅上靠着睡,平躺着睡等多种睡姿的检测,6549张图片
  • 数据库表的CRUD
  • Proxy与Reflect
  • 【安卓开发】【Android Studio】启动时报错“Unable to access Android SDK add-on list”
  • 【C语言篇】C 语言总复习(下):点亮编程思维,穿越代码的浩瀚星河
  • AI技术架构:从基础设施到应用
  • centos7的yum镜像源设置
  • Qt6开发自签名证书的https代理服务器
  • HarmonyOS:多线程并发-Worker
  • 小程序IOS安全区域优化:safe-area-inset-bottom
  • C++ 中多态性在实际项目中的应用场景
  • prettier配置