通过socket设置版本更新提示

1.项目使用的是git所以使用git仓库的短哈希作为版本更新标识,将该字符写入public文件,此处需要注意后端访问静态资源的路径。

在vue.config.js文件中写入

复制代码
function excuteVersion() {
    const fs = require('fs')
    const { execSync } = require('child_process')
// 获取当前Git仓库的短提交哈希,将其存储在cmtId变量中
    const cmtId = execSync('git rev-parse --short HEAD').toString().trim()
// 将cmtId写⼊到public⽬录下的v.txt⽂件中
    const versionFile = path.join(process.cwd(), 'public/static/market', 'version.txt')
    fs.writeFileSync(versionFile, cmtId)
}

excuteVersion()

写入后 监听后端socket的版本更新消息通知

创建一个ts文件监听消息

复制代码
export function wsListenVersion() {
    const wsStore = useWsStore();

    wsStore.on(WS_EVENT.VERSION_UPDATE,(data)=>{
        wsLogger(WS_STATUS.RECEIVED, WS_EVENT.VERSION_UPDATE, data);
        if (data.code === HTTP_CODE.SUCCESS) {
            showUpdateModal(data.data.new)
        }
    })
}

设置通知的样式

复制代码
export function showUpdateModal(newCommitId: string) {
    const key = `open${newCommitId}`;
    notification.open({
        message: "页面已经发生了更新",
        description:
            "检测到当前页面内容已经发生了更新,请刷新页面后使用!",
        btn: () =>
            h(
                Button,
                {
                    type: "primary",
                    size: "small",
                    onClick: () => {
                        window.location.reload();
                        notification.close(key);
                    }
                },
                {default: () => "刷新"}
            ),
        key,
        placement: "bottomRight"
    });
}

在首页加载创建socket连接成功后监听该通知

复制代码
onMounted(()=>{
// 登录后初始化socket连接
	initWs()
})

function initWs(): Promise<void> {
  return new Promise<void>(resolve => {
    wsStore
        .connect()
        .then(() => {
		  wsListenVersion();
          resolve();
        })
        .catch(reason => console.log("[ERROR][WS]", reason));
  });
}

以上通过学习参考该文章

https://blog.csdn.net/Ljq1041054607/article/details/140955141

相关推荐
郑州光合科技余经理1 小时前
海外O2O系统源码剖析:多语言、多货币架构设计与二次开发实践
java·开发语言·前端·小程序·系统架构·uni-app·php
arvin_xiaoting6 小时前
OpenClaw学习总结_I_核心架构_8:SessionPruning详解
前端·chrome·学习·系统架构·ai agent·openclaw·sessionpruning
工程师老罗8 小时前
Image(图像)的用法
java·前端·javascript
swipe9 小时前
把 JavaScript 原型讲透:从 `[[Prototype]]`、`prototype` 到 `constructor` 的完整心智模型
前端·javascript·面试
问道飞鱼9 小时前
【前端知识】React 组件生命周期:从底层原理到实践场景
前端·react.js·前端框架·生命周期
CHU7290359 小时前
定制专属美丽时刻:美容预约商城小程序的贴心设计
前端·小程序
浩~~10 小时前
反射型XSS注入
前端·xss
AwesomeDevin10 小时前
AI时代,我们的任务不应沉溺于与 AI 聊天,🤔 从“对话式编程”迈向“数字软件工厂”
前端·后端·架构
harrain10 小时前
antvG2折线图和区间range标记同时绘制
前端·javascript·vue.js·antv·g2
德育处主任Pro10 小时前
从重复搭建到高效生产,RollCode的H5开发新范式
前端