RabbitMQ先開外掛:Web MQTT Plugin,再以Vue-cli建置Vue3專案與套件precompiled-mqtt並實作訂閱與發佈MQTT
RabbitMQ之Web MQTT Plugin
首先要在已經有安裝RabbitMQ的前提下,開啟外掛:Web MQTT Plugin
rabbitmq-plugins enable rabbitmq_web_mqtt
參考文件:https://www.rabbitmq.com/web-mqtt.html
然後在RabbitMQ Management UI裡可以看到port:15675已經打開
![](https://dotblogsfile.blob.core.windows.net/user/hotmaneil/6aa99077-4837-4ad0-97b9-c3aab1e3e249/1689122894.png.png)
Vue與precompiled-mqtt
再來以Vue-cli建置Vue3專案,並安裝套件:precompiled-mqtt
npm i precompiled-mqtt
參考文件:https://www.npmjs.com/package/precompiled-mqtt
撰寫Vue的重點程式碼如下:
載入precompiled-mqtt
import mqtt from "precompiled-mqtt"
data()裡必須要
data() {
return {
conntectResult:null,
/** 訊息陣列 */
messageArray: []
}
},
訂閱(Subscriber),buildConnection是我自訂的function名稱
buildConnection() {
const vm = this
//Local broker
const URL = "ws://127.0.0.1:15675/ws";
const client = mqtt.connect(URL);
client.on('connect', () => {
console.log("連到broker");
this.conntectResult="連到broker"
client.subscribe('home/workStation2')
this.conntectResult+="已開始訂閱home/workStation2"
});
client.on('message', function (topic, msg) {
var result = `收到${topic}主題,訊息:${msg}`
const obj = JSON.parse(msg);
vm.messageArray.push(obj.context)
console.log(result)
})
},
發佈(Publish),publishMsg是我自訂的function名稱
publishMsg(){
const URL = "ws://127.0.0.1:15675/ws";
const client = mqtt.connect(URL);
var topic= 'home/workStation2'
var payload= '{ "context": "內傳訊息" }'
client.publish(topic,payload)
}
測試結果如下圖(按下發佈訊息3次):
![](https://dotblogsfile.blob.core.windows.net/user/hotmaneil/6aa99077-4837-4ad0-97b9-c3aab1e3e249/1689123674.png.png)