0


【vue+ stompjs接收rabbitMQ消息(断连重连mq问题】

问题描述:stompjs断连重连后一直连接不上,一直Opening web Socket …

原因:一个实例只能connect一次,重新new 对象

stompjs源码片段:(stompjs文档)

!](https://img-blog.csdnimg.cn/0664d5f5a69c4a609956aa6fbae63e40.png)

函数内部new Client返回新的一个对象,Stomp.over(ws)执行一次就是一个新对象

vue+stompjs接收mq消息完整代码

<template><div></div></template><script>import Stomp from"stompjs"exportconstMQTT_SERVICE= location.protocol ==='https:'?'wss://xxx/ws':'ws://xxx:15674/ws'// mqtt服务地址(https需要用wss协议)exportconstMQTT_USERNAME='xxx'// mqtt连接用户名exportconstMQTT_PASSWORD='xxx'// mqtt连接密码exportdefault{data(){return{client: Stomp.client(MQTT_SERVICE),};},created(){this.connect();},methods:{onConnected:function(frame){this.client.heartbeat.outgoing =20000;this.client.heartbeat.incoming =0;
      console.log("Connected: "+ frame);//订阅事件const event ="xxx";//topicthis.client.subscribe(event,this.responseCallback);//订阅状态const sataus ="xxx";//topicthis.client.subscribe(sataus,this.responseCallback);},onFailed:function(frame){
      console.log("MQ Failed: "+ frame);//******需要加下列代码才能重新new 对象连接this.client = Stomp.client(MQTT_SERVICE);//一个实例只能connect一次,得new个新的实例才可能进行新的connect
      Stomp.over(this.client);//失败重连this.connect();},responseCallback:function(frame){//接收消息处理
      console.log("MQ msg=>"+ frame.body);if(frame.body){//...逻辑处理}},connect:function(){//初始化mqtt客户端,并连接mqtt服务const headers ={login:MQTT_USERNAME,passcode:MQTT_PASSWORD,host:'xxx'};this.client.connect(headers,this.onConnected,this.onFailed);},},};</script>
标签: vue.js rabbitmq 前端

本文转载自: https://blog.csdn.net/qq_43831070/article/details/130325082
版权归原作者 写代码脑子疼 所有, 如有侵权,请联系我们删除。

“【vue+ stompjs接收rabbitMQ消息(断连重连mq问题】”的评论:

还没有评论