From e423d8afcf5b9666e166565d0509b621ebab17e7 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期一, 13 一月 2025 14:11:00 +0800 Subject: [PATCH] !172 合并 warmflow 功能分支 * update 优化 流程定义页面 点击复制之后跳转到未发布列表 * update 优化 流程定义页面 增加加载loading层 * fix: v-model处理有延迟 需要手动处理 * update 调整流程定义查询 * Merge remote-tracking branch 'origin/dev' into warm-flw-future * update 调整可驳回的节点 * update: 调整文案 * update: 激活/挂起改为switch操作 * update 优化 代码删除无用输出 * update 统一抄送人使用昵称展示 * update 调整分类接口 * update 统一业务id参数 * update 删除默认顶节点 * !168 优化流程分类 * update 恢复误删除代码 * update 优化流程分类 * update 修复 路由跳转未改全 * [update] * fix 修复一些问题 * update 重构流程分类表 * update 流程定义增加表单路径与编辑功能 修复一些其他bug * fix 修复 一些问题 * update 变量统一命名 * add 增加示例 * Merge branch 'warm-flw-future' of https://gitee.com/JavaLionLi/plus-ui… * update 调整办理人 * Merge remote-tracking branch 'origin/dev' into warm-flw-future * add 增加示例 * update 调整审批记录 添加流程导出 * remove 删除无用代码 * remove 删除无用代码 * [update] * [fix] * 流程干预删除委托 * 增加附件 * 附件修改 * 申请人查询修改 * 1.修改查询条件 * !167 fix 修复 import路径修改不全问题 * fix 修复 import路径修改不全问题 * !166 update 清除 ProcessPreview 引用 * update 清除 ProcessPreview 引用 * remove 删除 bpmn.js 设计器 * remove 删除 bpmn.js 设计器 * remove 删除 bpmn.js 设计器 * remove 删除 bpmn.js 设计器 * fix 修复 前端路径修改不全问题 * update 优化接口请求路径 * add 添加作废 * add 添加流程干预 * update 调整加签,减签 * update 调整加签,减签 * add 增加流程查看 * update 调整委托,转办 * update 调整流程变量显示 * update 调整办理人修改 * update 调整流程实例状态页面 * update 调整已办页面 * add 添加流程撤销 * update 调整任务,流程实例 ,流程定义页面 * Merge branch 'dev' into warm-flw-future * update 调整流程定义页面 * add 添加流程变量查看 * update 调整设计器路由名称 * update 调整办理人 * update 调整设计器uri * update 调整设计器请求uri 调整待办状态 * update 调整办理 驳回 终止等状态 * add 添加模型新增 * add 添加warm-ui设计器,删除无用代码 * Merge remote-tracking branch 'origin/dev' into warm-flw-future * add 添加流程设计 * update 调整驳回 * update 调整视图类型错误 * Merge branch 'warm-flw-future' of https://gitee.com/JavaLionLi/plus-ui… * 添加已办,未办 * Merge remote-tracking branch 'origin/dev' into warm-flw-future * update 调整流程实例,待办查询 * add 添加代办人,调整提交按钮校验 * update 调整流程定义查询 * add添加流程定义激活 挂起 * add 添加流程文件部署 调整流程发布 * update 优化 时间搜索组件统一 * Merge remote-tracking branch 'origin/dev' into warm-flw-future * fix 修复 用户管理编辑安全权限错误问题 * Merge remote-tracking branch 'origin/dev' into warm-flw-future * update 优化 类型报错问题 * update 优化 切换租户后刷新首页 * update 优化 实现表格行选中切换 * update 优化 使用 vueuse 重构 websocket 实现 * update 优化 使用 vueuse 重构 websocket 实现 * fix 修复 登出后重新登录 sse推送报错问题 * reset 回滚 代码修改 采用其他方案 * fix 修复 登出后重新登录 sse推送报错问题 * update 优化 删除无用代码 * update element-plus 2.7.5 => 2.7.8 * reset 回滚 错误修复 * update 优化 代码生成器编辑页禁用缓存 防止同步后页面不更新问题 * fix 修复 代码生成同步点击取消报错问题 * 初始化添加warm-flow --- src/utils/websocket.ts | 167 ++++++++++++++----------------------------------------- 1 files changed, 43 insertions(+), 124 deletions(-) diff --git a/src/utils/websocket.ts b/src/utils/websocket.ts index 0d5e9ee..c9b394c 100644 --- a/src/utils/websocket.ts +++ b/src/utils/websocket.ts @@ -1,132 +1,51 @@ -/** - * @module initWebSocket 鍒濆鍖� - * @module websocketonopen 杩炴帴鎴愬姛 - * @module websocketonerror 杩炴帴澶辫触 - * @module websocketclose 鏂紑杩炴帴 - * @module resetHeart 閲嶇疆蹇冭烦 - * @module sendSocketHeart 蹇冭烦鍙戦�� - * @module reconnect 閲嶈繛 - * @module sendMsg 鍙戦�佹暟鎹� - * @module websocketonmessage 鎺ユ敹鏁版嵁 - * @module test 娴嬭瘯鏀跺埌娑堟伅浼犻�� - * @description socket 閫氫俊 - * @param {any} url socket鍦板潃 - * @param {any} websocket websocket 瀹炰緥 - * @param {any} heartTime 蹇冭烦瀹氭椂鍣ㄥ疄渚� - * @param {number} socketHeart 蹇冭烦娆℃暟 - * @param {number} HeartTimeOut 蹇冭烦瓒呮椂鏃堕棿 - * @param {number} socketError 閿欒娆℃暟 - */ - import { getToken } from '@/utils/auth'; +import { ElNotification } from 'element-plus'; import useNoticeStore from '@/store/modules/notice'; - -const { addNotice } = useNoticeStore(); - -let socketUrl: any = ''; // socket鍦板潃 -let websocket: any = null; // websocket 瀹炰緥 -let heartTime: any = null; // 蹇冭烦瀹氭椂鍣ㄥ疄渚� -let socketHeart = 0 as number; // 蹇冭烦娆℃暟 -const HeartTimeOut = 10000; // 蹇冭烦瓒呮椂鏃堕棿 10000 = 10s -let socketError = 0 as number; // 閿欒娆℃暟 // 鍒濆鍖杝ocket export const initWebSocket = (url: any) => { - socketUrl = url; - // 鍒濆鍖� websocket - websocket = new WebSocket(url + '?Authorization=Bearer ' + getToken() + '&clientid=' + import.meta.env.VITE_APP_CLIENT_ID); - websocketonopen(); - websocketonmessage(); - websocketonerror(); - websocketclose(); - sendSocketHeart(); - return websocket; -}; - -// socket 杩炴帴鎴愬姛 -export const websocketonopen = () => { - websocket.onopen = function () { - console.log('杩炴帴 websocket 鎴愬姛'); - resetHeart(); - }; -}; - -// socket 杩炴帴澶辫触 -export const websocketonerror = () => { - websocket.onerror = function (e: any) { - console.log('杩炴帴 websocket 澶辫触', e); - }; -}; - -// socket 鏂紑閾炬帴 -export const websocketclose = () => { - websocket.onclose = function (e: any) { - console.log('鏂紑杩炴帴', e); - }; -}; - -// socket 閲嶇疆蹇冭烦 -export const resetHeart = () => { - socketHeart = 0; - socketError = 0; - clearInterval(heartTime); - sendSocketHeart(); -}; - -// socket蹇冭烦鍙戦�� -export const sendSocketHeart = () => { - heartTime = setInterval(() => { - // 濡傛灉杩炴帴姝e父鍒欏彂閫佸績璺� - if (websocket.readyState == 1) { - // if (socketHeart <= 30) { - websocket.send( - JSON.stringify({ - type: 'ping' - }) - ); - socketHeart = socketHeart + 1; - } else { - // 閲嶈繛 - reconnect(); - } - }, HeartTimeOut); -}; - -// socket閲嶈繛 -export const reconnect = () => { - if (socketError <= 2) { - clearInterval(heartTime); - initWebSocket(socketUrl); - socketError = socketError + 1; - // eslint-disable-next-line prettier/prettier - console.log('socket閲嶈繛', socketError); - } else { - // eslint-disable-next-line prettier/prettier - console.log('閲嶈瘯娆℃暟宸茬敤瀹�'); - clearInterval(heartTime); + if (import.meta.env.VITE_APP_WEBSOCKET === 'false') { + return; } -}; - -// socket 鍙戦�佹暟鎹� -export const sendMsg = (data: any) => { - websocket.send(data); -}; - -// socket 鎺ユ敹鏁版嵁 -export const websocketonmessage = () => { - websocket.onmessage = function (e: any) { - if (e.data.indexOf('heartbeat') > 0) { - resetHeart(); + url = url + '?Authorization=Bearer ' + getToken() + '&clientid=' + import.meta.env.VITE_APP_CLIENT_ID; + useWebSocket(url, { + autoReconnect: { + // 閲嶈繛鏈�澶ф鏁� + retries: 3, + // 閲嶈繛闂撮殧 + delay: 1000, + onFailed() { + console.log('websocket閲嶈繛澶辫触'); + } + }, + heartbeat: { + message: JSON.stringify({ type: 'ping' }), + // 鍙戦�佸績璺崇殑闂撮殧 + interval: 10000, + // 鎺ユ敹鍒板績璺硆esponse鐨勮秴鏃舵椂闂� + pongTimeout: 2000 + }, + onConnected() { + console.log('websocket宸茬粡杩炴帴'); + }, + onDisconnected() { + console.log('websocket宸茬粡鏂紑'); + }, + onMessage: (_, e) => { + if (e.data.indexOf('ping') > 0) { + return; + } + useNoticeStore().addNotice({ + message: e.data, + read: false, + time: new Date().toLocaleString() + }); + ElNotification({ + title: '娑堟伅', + message: e.data, + type: 'success', + duration: 3000 + }); } - if (e.data.indexOf('ping') > 0) { - return; - } - addNotice({ - message: e.data, - read: false, - time: new Date().toLocaleString() - }); - ElMessage.success(e.data); - return e.data; - }; + }); }; -- Gitblit v1.9.3