最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue 通過 mqtt 實(shí)現(xiàn)實(shí)時(shí)接收消息的操作方法

 更新時(shí)間:2024年12月09日 09:27:31   作者:葉子_o  
?MQTT是一種基于發(fā)布/訂閱模式的輕量級(jí)消息協(xié)議,適用于硬件性能有限的遠(yuǎn)程設(shè)備和網(wǎng)絡(luò)狀況不佳的環(huán)境,這篇文章主要介紹了vue 通過 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)單、開放和易于實(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, // 是否開啟 mqtt
    // 下邊三個(gè)的值是與后端約定好的,根據(jù)實(shí)際情況賦值
    ImgStart: '', 
    ImgSend: '',
    ImgEnd: ''
},
mounted() {
	// 創(chuàng)建連接
	this.createConnection()
},
beforeDestroy() {
	// 斷開 mqtt 連接,不然會(huì)一直監(jiān)聽消息
  	this.disConnect()
},
methods: {
	// 創(chuàng)建連接
    createConnection() {
      const { host, port, endpoint, ...options } = this.connection
      // 連接的 url
      const connectUrl = `ws://${host}:${port}${endpoint}`
      // 如果開啟了 mqtt
      if (this.mqttfalg) {
        this.client = mqtt.connect(connectUrl, options)
        this.client.on('connect', () => {
          console.log('連接成功!')
          // 關(guān)閉開關(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)聽收到的消息
        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é)束,說明當(dāng)前最后一條消息已發(fā)送完畢
          if (topic === this.ImgEnd) {
            console.log('消息接收完畢')
          }
        })
      }
    },
    // 斷開連接
    disConnect() {
      if (this.client) {
        this.client.end()
        console.log('斷開連接')
      }
    },
}

到此這篇關(guān)于vue 通過 mqtt 實(shí)現(xiàn)實(shí)時(shí)接收消息的文章就介紹到這了,更多相關(guān)vue實(shí)時(shí)接收消息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue 的點(diǎn)擊事件獲取當(dāng)前點(diǎn)擊的元素方法

    vue 的點(diǎn)擊事件獲取當(dāng)前點(diǎn)擊的元素方法

    今天小編就為大家分享一篇vue 的點(diǎn)擊事件獲取當(dāng)前點(diǎn)擊的元素方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)動(dòng)態(tài)菜單

    vue實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)動(dòng)態(tài)菜單

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)動(dòng)態(tài)菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • webpack轉(zhuǎn)vite的詳細(xì)操作流程與問題總結(jié)

    webpack轉(zhuǎn)vite的詳細(xì)操作流程與問題總結(jié)

    Vite是新一代的前端開發(fā)與構(gòu)建工具,相比于傳統(tǒng)的webpack,Vite 有著極速的本地項(xiàng)目啟動(dòng)速度(通常不超過5s)以及極速的熱更新速度(幾乎無(wú)感知),下面這篇文章主要給大家介紹了關(guān)于webpack轉(zhuǎn)vite的詳細(xì)操作流程與問題總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • Vue.js中數(shù)組變動(dòng)的檢測(cè)詳解

    Vue.js中數(shù)組變動(dòng)的檢測(cè)詳解

    這篇文章給大家主要介紹了Vue.js中數(shù)組變動(dòng)的檢測(cè),文中給出了詳細(xì)的示例代碼和過程介紹,相信會(huì)對(duì)大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • Vue+ElementUI表格狀態(tài)區(qū)分,row-class-name屬性詳解

    Vue+ElementUI表格狀態(tài)區(qū)分,row-class-name屬性詳解

    這篇文章主要介紹了Vue+ElementUI表格狀態(tài)區(qū)分,row-class-name屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue3 <Suspense>正確使用指南與注意事項(xiàng)

    Vue3 <Suspense>正確使用指南與注意事項(xiàng)

    本文詳細(xì)介紹了Vue3中<Suspense>組件的使用問題及解決方案,包括Promise返回值未正確顯示為字符串和fallback內(nèi)容未顯示的問題,并提供了使用defineAsyncComponent和頂層await等方法的解決方案,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Vue2中Class?Component的使用指南

    Vue2中Class?Component的使用指南

    Vue.js?以其簡(jiǎn)單易用和靈活性受到了廣大開發(fā)者的喜愛,然而,隨著項(xiàng)目的復(fù)雜度增加,組件的管理和組織也變得越來越重要,下面我們就來看看如何通過vue-class-component編寫更加優(yōu)雅和結(jié)構(gòu)化的組件
    2024-11-11
  • 一篇文章帶你了解vue路由

    一篇文章帶你了解vue路由

    這篇文章主要為大家詳細(xì)介紹了vue的路由,路由的本質(zhì)就是一種對(duì)應(yīng)關(guān)系,比如說我們?cè)趗rl地址中輸入我們要訪問的url地址之后,瀏覽器要去請(qǐng)求這個(gè)url地址對(duì)應(yīng)的資源,本文具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 關(guān)于vite.config.ts文件的配置方式

    關(guān)于vite.config.ts文件的配置方式

    這篇文章主要介紹了關(guān)于vite.config.ts文件的配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 淺談el-table中使用虛擬列表對(duì)對(duì)表格進(jìn)行優(yōu)化

    淺談el-table中使用虛擬列表對(duì)對(duì)表格進(jìn)行優(yōu)化

    我們會(huì)經(jīng)常使用表格,如果數(shù)據(jù)量大就直接可以分頁(yè),如果多條可能會(huì)影響表格的卡頓,那么應(yīng)該如何進(jìn)行優(yōu)化,感興趣的可以了解一下
    2021-08-08

最新評(píng)論

五常市| 安陆市| 阳东县| 凌源市| 镶黄旗| 石嘴山市| 东辽县| 上栗县| 神木县| 绥江县| 庆安县| 清新县| 长阳| 濮阳县| 讷河市| 崇仁县| 巴东县| 肥乡县| 石狮市| 微山县| 韩城市| 永吉县| 汪清县| 兰溪市| 宜州市| 太原市| 保定市| 南平市| 洪湖市| 昌吉市| 通州市| 安国市| 乡宁县| 翼城县| 武清区| 哈密市| 沾益县| 乐都县| 兴海县| 天门市| 南和县|