Vue利用Stompjs實現(xiàn)MQTT與RabbitMQ通信-boldiy

<template>
<div class="page">
<el-button type="primary" @click="createConnection">連接MQTT</el-button>
<el-button type="primary" @click="doSubscribe">訂閱主題</el-button>
<el-button type="primary" @click="doUnSubscribe">取消主題</el-button>
<el-button type="primary" @click="destroyConnection">斷開MQTT</el-button>

</div>
</template>

<script>
import Stomp from 'stompjs';
export default {
data() {
return {
client: null,
frame: null,
options: {
vhost: '/',
incoming: 8000, // 心跳包時間,(須大于0,且小于10000,因為服務器可能默認10秒沒心跳就會斷開)
outgoing: 8000, // 心跳包時間,(須大于0,且小于10000,因為服務器可能默認10秒沒心跳就會斷開)
account: 'taijuyun',
pwd: '123456',
server: 'ws://114.216.4.244:15674/ws',
message: '',
},
};
},

methods: {
connect(options) {
this.options = { ...this.options, ...options };
const mqUrl = this.options.server;
const ws = new WebSocket(mqUrl);
ws.onclose = close => {
console.log('webSocket關閉', close);
};
ws.onerror = error => {
console.log('webSocket異常', error);
};
ws.onopen = success => {
console.log('webSocket連接成功', success);
};
this.client = Stomp.over(ws);
this.client.heartbeat.incoming = this.options.incoming;
this.client.heartbeat.outgoing = this.options.outgoing;
this.client.debug = null; //關閉控制臺調(diào)試

  //連接成功時
  const onConnect = async () => {
    console.log('stomp 連接成功!');
    //訂閱消息
    //this.subscribe();
  };
  //發(fā)生錯誤自動重連
  const onError = errorMsg => {
    console.error(`stomp 斷開連接,正在準備重新連接...`, errorMsg);
    this.connect(this.options);
  };

  //開始連接
  this.client.connect(
    this.options.account, // 用戶名
    this.options.pwd, // 密碼
    onConnect,
    onError,
    this.options.vhost
  );
},
doSubscribe() {
  this.currentSubscribe = this.client.subscribe('/topic/5ccde2da94d141769c9c5b1ac49f73d7', function (messages) {
    console.log('receive:', messages);
  });
},
doUnSubscribe() {
  this.currentSubscribe.unsubscribe();
},
createConnection() {
  this.connect();
},
destroyConnection() {
  this.client.disconnect(() => {
    console.log('已關閉mq連接');
  });
},

},
created() {},
mounted() {
this.connect();
},
};
</script>

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容