泉州做网站排名,骨干校 建设网站,网站域名行业动态,企业手机网站建设提升用户体验的三个点stomp.js的新版本是可以支持MQ断连后#xff0c;自动重连#xff0c;但是如果是直接物理断网了#xff0c;那久无论如何都没有办法重连#xff0c;为了不影响业务#xff0c;可以实现一个MQ断连后#xff0c;重连三次#xff0c;然后还是连不上的话#xff0c;就启动告…stomp.js的新版本是可以支持MQ断连后自动重连但是如果是直接物理断网了那久无论如何都没有办法重连为了不影响业务可以实现一个MQ断连后重连三次然后还是连不上的话就启动告警让业务人员注意。
代码如下
定义一个告警的audio控件让它隐藏最好是放在页面一直能访问的地方头部脚部的位置。要注意如果要引用assets里面的多媒体文件要使用动态引入的方式不然没法引入成功。
template
audio controlscontrols hidden :srcgetAudioUrl() idalertAudio /audio
/templatescript
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函数关闭弹框的时候也就关闭告警的声音。