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

sse实时通信

使用原因:用户网络环境较差,之前使用ws总是出现断连重连,导致数据总是不能实时更新,所以更换为sse

npm install event-source-polyfill

createWebSocket:创建sse连接 

getWebSocketMsg:接收sse消息

  import { EventSourcePolyfill } from "event-source-polyfill";import { getToken } from '@/utils/auth'class webSocketClass {constructor(name) {this.localUrl = `http`; //直连阿里云正式环境this.globalCallback = null;this.createWebSocket(name);this.readyState = 0;}createWebSocket(url) {var that =this// 建立连接this.eventSource = new EventSourcePolyfill(this.localUrl+ url,{// 设置重连时间heartbeatTimeout: 60 * 60 * 1000,// 添加tokenheaders: {Authorization: `Bearer ${getToken()}`,},});this.eventSource.onopen = (e) => {console.log("已建立SSE连接~");};this.eventSource.onmessage = (e) => {const d = JSON.parse(e.data);console.log("sse已接受到消息:", d);that.getWebSocketMsg(that.globalCallback);};this.eventSource.onerror = (e) => {console.log("SSE连接错误" + e.readyState);if (e.readyState == EventSource.CLOSED) {console.log("SSE连接关闭");} else if (this.eventSource.readyState == EventSource.CONNECTING) {console.log("SSE正在重连");//重新设置tokenthis.eventSource.headers = {Authorization: `Bearer ${getToken()}`,};} else {console.log("error", e);}};}getWebSocketMsg(callback) {console.log("开始接收sse消息~",this.eventSource);this.eventSource.onmessage = (ev) => {callback && callback(ev);};}close(){this.eventSource.close()console.log("SSE关闭" + e.readyState);}
}
export default webSocketClass;

使用方法:

  this.warningSSE = new vueSSEUtil('/sse/warning/'+this.userId);this.warningSSE.getWebSocketMsg((evt) => {const d = JSON.parse(evt.data);d.warnCode = this.code_to_value(d.warnCode);console.log('sse回调数据',d) });

一定要在页面退出关闭sse

this.warningSSE.close()

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

相关文章:

  • Qt专栏3—Qt项目创建Hello World
  • linux输出的重定向无效问题和解决
  • chromium114添加新的语言国际化支持
  • 赛氪荣幸受邀参与中国联合国采购促进会第五次会员代表大会
  • 车载通信架构 —— 传统车内通信网络发展回顾
  • `maven.test.skip` 和 `skipTests` 的区别
  • linux输出的重定无效问题和解决
  • 开发上门按摩系统对技师如何管理,薪资结构怎么设计
  • 云HIS系统源码,医院管理系信息统源码,融合B/S版四级电子病历系统
  • Redis篇---第十篇
  • (vue)前后端配合实现文件预览功能
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • SQL Server删除重复数据只保留一条
  • 如何使用 WPF 应用程序连接 FastReport报表
  • 【Django使用】4大模块50页md文档,第4篇:Django请求与响应和cookie与session
  • uniapp - 开关按钮
  • 使用sql语句获取SQL server库里所有表的表名,注释,行数
  • D-Wave推出新开源及解决无线信道解码新方案!
  • JavaScrip获取视频第一帧作为封面图
  • MATLAB - 一些散装小技巧
  • 【开源】基于Vue.js的衣物搭配系统的设计和实现
  • ubuntu 安装 gparted
  • vue超好用的自定义指令封装
  • 文件描述符与锁定状态在系统层面的表示
  • C#,数值计算——插值和外推,PolCoef的计算方法与源程序
  • 单体进化微服务:拆分、注册、调用、网关、过滤、治理、分布式事务
  • 介绍正则表达式及其用法
  • SpEL 表达式 是什么
  • gbase 8s 按时间点恢复
  • OceanBase:OBServer节点管理