vue 通過(guò) mqtt 實(shí)現(xiàn)實(shí)時(shí)接收消息的操作方法
一. MQTT 簡(jiǎn)介
MQTT(消息隊(duì)列遙測(cè)傳輸)是一種基于發(fā)布/訂閱模式的輕量級(jí)消息協(xié)議,適用于硬件性能有限的遠(yuǎn)程設(shè)備和網(wǎng)絡(luò)狀況不佳的環(huán)境。它工作在TCP/IP協(xié)議之上,具有輕量、簡(jiǎn)單、開(kāi)放和易于實(shí)現(xiàn)的特點(diǎn),廣泛應(yīng)用于物聯(lián)網(wǎng)(IoT)、機(jī)器與機(jī)器(M2M)通信、智能家居等領(lǐng)域。
二. MQTT 的基本組成
MQTT協(xié)議由固定頭、可變頭和消息體三部分組成:
固定頭:每個(gè)消息都有固定頭,但其長(zhǎng)度不固定,范圍為2-5個(gè)字節(jié)。固定頭用于表示消息的長(zhǎng)度和其他控制信息。
可變頭:存儲(chǔ)消息相關(guān)的屬性,如協(xié)議名、協(xié)議版本號(hào)、心跳時(shí)長(zhǎng)、主題名、消息ID等。不同類型的消息,可變頭中的內(nèi)容也不同。
消息體:實(shí)際發(fā)送的數(shù)據(jù)。例如,CONNECT消息體包含客戶端標(biāo)識(shí)、用戶名、密碼等信息;PUBLISH消息體則是實(shí)際發(fā)送的消息內(nèi)容。
三. MQTT 的使用
安裝
npm i mqtt --save
引入
import mqtt from 'mqtt'
使用
data() { client: null, connection: { host: 'localhost', port: 8083, // 端口號(hào) endpoint: '/mqtt', clean: true, connectTimeout: 4000, // 超時(shí)時(shí)間 reconnectPeriod: 4000, clientId: uuid.v4(), // 這是一個(gè)隨機(jī)生成的自定義的值 cleanSession: true, // 是否清理Session keepAlive: 5 // 心跳間隔 }, mqttfalg: true, // 是否開(kāi)啟 mqtt // 下邊三個(gè)的值是與后端約定好的,根據(jù)實(shí)際情況賦值 ImgStart: '', ImgSend: '', ImgEnd: '' }, mounted() { // 創(chuàng)建連接 this.createConnection() }, beforeDestroy() { // 斷開(kāi) mqtt 連接,不然會(huì)一直監(jiān)聽(tīng)消息 this.disConnect() }, methods: { // 創(chuàng)建連接 createConnection() { const { host, port, endpoint, ...options } = this.connection // 連接的 url const connectUrl = `ws://${host}:${port}${endpoint}` // 如果開(kāi)啟了 mqtt if (this.mqttfalg) { this.client = mqtt.connect(connectUrl, options) this.client.on('connect', () => { console.log('連接成功!') // 關(guān)閉開(kāi)關(guān),不然會(huì)一直重復(fù)連接 this.mqttfalg = false // 訂閱配置(這里的參數(shù)都是與后端約定好的,根據(jù)實(shí)際情況傳入) this.client.subscribe(this.ImgEnd, { qos: 2 }) this.client.subscribe(this.ImgSend, { qos: 2 }) this.client.subscribe(this.ImgStart, { qos: 2 }) }) // 連接出錯(cuò)執(zhí)行 this.client.on('error', error => { console.log('連接出錯(cuò)', error) }) // 重連時(shí)執(zhí)行 this.client.on('reconnect', error => { console.log('正在重連', error) }) // 監(jiān)聽(tīng)收到的消息 this.client.on('message', async (topic, data) => { const json = JSON.parse(data.toString()) console.log('接到了消息', topic, json) // 如果收到的消息 topic 等于發(fā)送 if (topic === this.ImgSend) { // 處理收到的消息 json console.log('收到的消息內(nèi)容', json) } // 如果收到的消息 topic 等于結(jié)束,說(shuō)明當(dāng)前最后一條消息已發(fā)送完畢 if (topic === this.ImgEnd) { console.log('消息接收完畢') } }) } }, // 斷開(kāi)連接 disConnect() { if (this.client) { this.client.end() console.log('斷開(kāi)連接') } }, }
到此這篇關(guān)于vue 通過(guò) mqtt 實(shí)現(xiàn)實(shí)時(shí)接收消息的文章就介紹到這了,更多相關(guān)vue實(shí)時(shí)接收消息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用VUE+iView+.Net Core上傳圖片的方法示例
這篇文章主要介紹了使用VUE+iView+.Net Core上傳圖片的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Vue倒計(jì)時(shí)3秒后返回首頁(yè)Demo(推薦)
這篇文章主要介紹了Vue倒計(jì)時(shí)3秒后返回首頁(yè)Demo,倒計(jì)時(shí)結(jié)束后要清除計(jì)時(shí)器,防止內(nèi)存泄漏,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-11-11vant list組件滾動(dòng)保留滾動(dòng)條位置
這篇文章主要介紹了vant list組件滾動(dòng)保留滾動(dòng)條位置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09基于Vue uniapp實(shí)現(xiàn)貪吃蛇游戲
貪吃蛇游戲想必是很多70、80后的回憶,一直到現(xiàn)在也深受大家的喜歡。本文將利用Vue+uniapp實(shí)現(xiàn)這一經(jīng)典的游戲,感興趣的可以了解一下2022-04-04vue使用Vue.extend方法仿寫個(gè)loading加載中效果實(shí)例
在vue中提供v-loading命令,用于div的loading加載,下面這篇文章主要給大家介紹了關(guān)于vue使用Vue.extend方法仿寫個(gè)loading加載中效果的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06vue+element-ui+ajax實(shí)現(xiàn)一個(gè)表格的實(shí)例
下面小編就為大家分享一篇vue+element-ui+ajax實(shí)現(xiàn)一個(gè)表格的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03通用vue組件化展示列表數(shù)據(jù)實(shí)例詳解
組件化開(kāi)發(fā)能大幅提高應(yīng)用的開(kāi)發(fā)效率、測(cè)試性、復(fù)用性等,下面這篇文章主要給大家介紹了關(guān)于通用vue組件化展示列表數(shù)據(jù)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06Vue實(shí)現(xiàn)Tab標(biāo)簽路由效果并用Animate.css做轉(zhuǎn)場(chǎng)動(dòng)畫效果的代碼
這篇文章主要介紹了Vue實(shí)現(xiàn)Tab標(biāo)簽路由效果,并用Animate.css做轉(zhuǎn)場(chǎng)動(dòng)畫效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Vue編譯器源碼分析compileToFunctions作用詳解
這篇文章主要為大家介紹了Vue編譯器源碼分析compileToFunctions作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07