npm stomp.js 的消息断连报警

news/2025/1/16 1:08:14/

stomp.js的新版本是可以支持MQ断连后,自动重连,但是如果是直接物理断网了,那久无论如何都没有办法重连,为了不影响业务,可以实现一个MQ断连后,重连三次,然后还是连不上的话,就启动告警,让业务人员注意。

代码如下:

定义一个告警的audio控件,让它隐藏,最好是放在页面一直能访问的地方,头部,脚部的位置。要注意,如果要引用assets里面的多媒体文件,要使用动态引入的方式,不然没法引入成功。

<template> 
<audio controls="controls" hidden :src="getAudioUrl()"  id="alertAudio" ></audio>
</template><script>
methods:{getAudioUrl(name){return new URL(`../../assets/audio.mp3}`, import.meta.url).href},
}
</script>

在MQ监听器

import { Client } from '@stomp/stompjs';
//计数器
const errorNum = ref(0);
//播放的flag
const playFlag = ref(true)
//消息框
const elMessageRef = ref(null);
const clients = new Client({brokerURL: 'ws://0.0.0.1:1111', connectHeaders: {login: 'admin123',passcode: 'admin123',},debug: function (str) {console.log(str);},reconnectDelay: 1000,heartbeatIncoming: 2000,heartbeatOutgoing: 2000,
});clients.onConnect = function (frame) {const subscription = clients.subscribe('/topic/aa', consumerCallback); let alertAudio = document.getElementById("Audio");alertAudio.pause();// 关闭告警消息框,使用的是elmessage.close()函数。elMessageRef.value.close();elMessageRef.value = null;};clients.onWebSocketClose = function(frame){errorNum.value += 1; if(errorNum.value== 3 && playFlag.value == true){elMessageRef.value = showErrorMessage();playSound();errorNum.value = 0}
};
// 让告警的声音响起来,
function playSound(){let alertAudio = document.getElementById("Audio");if(playFlag.value){alertAudio.play();
//让告警的声音一直循环播放alertAudio.addEventListener('ended', () => {alertAudio.currentTime = 0;alertAudio.play();});}else{alertAudio.pause();}
}// 显示告警信息框
function showErrorMessage(){let msg =  ElMessage({showClose: true,duration:0,message: 'MQ断开了,请注意',type: 'error',onClose:()=>{elMessageRef.value = null;let alertAudio = document.getElementById("Audio");alertAudio.pause();playFlag.value = true;}});return msg
}

onConnect 函数就是连接成功,那就需要去让警告声音自动关闭。调用alertAudio.pause();并且将告警框销毁,elMessageRef.value.close()。

onWebSocketClose函数就是监听websocket是否关闭,如果关闭,就去开始计数,然后调用警告声音和弹框。

在弹框这里,需要去让弹框不自动消失,而是触发关闭onclose函数,关闭弹框的时候,也就关闭告警的声音。
 


http://www.ppmy.cn/news/1069914.html

相关文章

JVM知识点(二)

1、G1垃圾收集器 -XX:MaxGCPauseMillis10&#xff0c;G1的参数&#xff0c;表示在任意1s时间内&#xff0c;停顿时间不能超过10ms&#xff1b;G1将堆切分成很多小堆区&#xff08;Region&#xff09;&#xff0c;每一个Region可以是Eden、Survivor或Old区&#xff1b;这些区在…

使用 Amazon Lambda 进行无服务器计算:云架构中的一场革命

引言 十年前,无服务器架构还像是痴人说梦。不再如此了! 有了 Amazon Lambda,我们现在可以建构和运行应用程序而不需要考虑服务器。云供应商会无缝地处理所有服务器的供应、扩展和管理。我们只需要关注代码。 这为云部署带来了前所未有的敏捷性、自动化和优化。但是,要发挥它的…

Spring Boot框架以及它的优势

文章目录 介绍1. **简化配置**2. **快速启动**3. **自动配置**4. **集成第三方库和框架**5. **微服务支持**6. **内嵌式数据库支持**7. **健康监控和管理**8. **可插拔的开发工具**9. **丰富的社区和生态系统**10. **良好的测试支持&#xff1a;** 核心特性**1. 依赖注入&#…

Google Play商店优化排名因素之应用的评分评论

下载次数是应用程序受欢迎程度的指标&#xff0c;Google在对我们的应用程序进行排名时也会将其考虑在内。评级和评论会影响应用程序的转化率&#xff0c;因为许多用户在做出决定之前会根据平均评级或最近的评论来评估我们的应用程序。 1、评级的重要性。 如果我们的应用程序有…

Hive 服务管理脚本

#!/bin/bash HIVE_HOME/opt/software/hive-3.1.3 HIVE_LOG_HOME/opt/software/hive-3.1.3/logfunction checkLogDir {if [[ ! -e ${HIVE_LOG_HOME} ]]; thenecho "${HIVE_LOG_HOME} 目录不存在&#xff0c;正在创建。"mkdir -p ${HIVE_LOG_HOME}fi }function checkHi…

《Flink学习笔记》——第三章 Flink的部署模式

不同的应用场景&#xff0c;有时候对集群资源的分配和占用有不同的需求。所以Flink为各种场景提供了不同的部署模式。 3.1 部署模式&#xff08;作业角度/通用分类&#xff09; 根据集群的生命周期、资源的分配方式、main方法到底在哪里执行——客户端还是Client还是JobManage…

java 观察者模式

观察者模式 观察者模式简介观察者模式的实现总结 观察者模式简介 观察者&#xff08;Observer&#xff09;模式的定义&#xff1a;指多个对象间存在一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。这种模式有…

Linux 指令心法(二)`cd` 更改当前目录

文章目录 命令的概述和用途命令的用法命令行选项和参数的详细说明命令的示例命令的注意事项或提示 命令的概述和用途 cd 是 “Change Directory” 的缩写。这是一个 shell 内建命令&#xff0c;用于在 Linux 和 Unix 系统中改变当前工作目录。通过使用 cd 命令&#xff0c;用户…