欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2024年12月09日 09:27:31   作者:葉子_o  
?MQTT是一種基于發(fā)布/訂閱模式的輕量級消息協(xié)議,適用于硬件性能有限的遠程設(shè)備和網(wǎng)絡(luò)狀況不佳的環(huán)境,這篇文章主要介紹了vue 通過 mqtt 實現(xiàn)實時接收消息,需要的朋友可以參考下

一. MQTT 簡介

‌MQTT(消息隊列遙測傳輸)是一種基于發(fā)布/訂閱模式的輕量級消息協(xié)議,適用于硬件性能有限的遠程設(shè)備和網(wǎng)絡(luò)狀況不佳的環(huán)境。‌它工作在TCP/IP協(xié)議之上,具有輕量、簡單、開放和易于實現(xiàn)的特點,廣泛應(yīng)用于物聯(lián)網(wǎng)(IoT)、機器與機器(M2M)通信、智能家居等領(lǐng)域。

二. MQTT 的基本組成

MQTT協(xié)議由固定頭、可變頭和消息體三部分組成:

固定頭‌:每個消息都有固定頭,但其長度不固定,范圍為2-5個字節(jié)。固定頭用于表示消息的長度和其他控制信息。
可變頭‌:存儲消息相關(guān)的屬性,如協(xié)議名、協(xié)議版本號、心跳時長、主題名、消息ID等。不同類型的消息,可變頭中的內(nèi)容也不同。
‌消息體‌:實際發(fā)送的數(shù)據(jù)。例如,CONNECT消息體包含客戶端標(biāo)識、用戶名、密碼等信息;PUBLISH消息體則是實際發(fā)送的消息內(nèi)容。

三. MQTT 的使用

安裝

npm i mqtt --save

引入

import mqtt from 'mqtt'

使用

data() {
	client: null,
    connection: {
      host: 'localhost',
      port: 8083, // 端口號
      endpoint: '/mqtt',
      clean: true,
      connectTimeout: 4000, // 超時時間
      reconnectPeriod: 4000,
      clientId: uuid.v4(), // 這是一個隨機生成的自定義的值
      cleanSession: true, // 是否清理Session
      keepAlive: 5 // 心跳間隔
    },
    mqttfalg: true, // 是否開啟 mqtt
    // 下邊三個的值是與后端約定好的,根據(jù)實際情況賦值
    ImgStart: '', 
    ImgSend: '',
    ImgEnd: ''
},
mounted() {
	// 創(chuàng)建連接
	this.createConnection()
},
beforeDestroy() {
	// 斷開 mqtt 連接,不然會一直監(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),不然會一直重復(fù)連接
          this.mqttfalg = false
          // 訂閱配置(這里的參數(shù)都是與后端約定好的,根據(jù)實際情況傳入)
          this.client.subscribe(this.ImgEnd, { qos: 2 })
          this.client.subscribe(this.ImgSend, { qos: 2 })
          this.client.subscribe(this.ImgStart, { qos: 2 })
        })
        // 連接出錯執(zhí)行
        this.client.on('error', error => {
          console.log('連接出錯', error)
        })
        // 重連時執(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 實現(xiàn)實時接收消息的文章就介紹到這了,更多相關(guān)vue實時接收消息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用VUE+iView+.Net Core上傳圖片的方法示例

    使用VUE+iView+.Net Core上傳圖片的方法示例

    這篇文章主要介紹了使用VUE+iView+.Net Core上傳圖片的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Vue倒計時3秒后返回首頁Demo(推薦)

    Vue倒計時3秒后返回首頁Demo(推薦)

    這篇文章主要介紹了Vue倒計時3秒后返回首頁Demo,倒計時結(jié)束后要清除計時器,防止內(nèi)存泄漏,本文通過示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-11-11
  • vant list組件滾動保留滾動條位置

    vant list組件滾動保留滾動條位置

    這篇文章主要介紹了vant list組件滾動保留滾動條位置,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue實現(xiàn)輪播圖組件的封裝

    Vue實現(xiàn)輪播圖組件的封裝

    Vue輪播圖組件的封裝可通過封裝組件、使用插件、配置化等方式實現(xiàn),主要包括圖片預(yù)加載、定時輪播、無限滾動、手勢滑動、響應(yīng)式布局等功能,實現(xiàn)方式可使用Vue的生命周期函數(shù)、自定義事件、計算屬性等技術(shù)
    2023-04-04
  • 基于Vue uniapp實現(xiàn)貪吃蛇游戲

    基于Vue uniapp實現(xiàn)貪吃蛇游戲

    貪吃蛇游戲想必是很多70、80后的回憶,一直到現(xiàn)在也深受大家的喜歡。本文將利用Vue+uniapp實現(xiàn)這一經(jīng)典的游戲,感興趣的可以了解一下
    2022-04-04
  • vue使用Vue.extend方法仿寫個loading加載中效果實例

    vue使用Vue.extend方法仿寫個loading加載中效果實例

    在vue中提供v-loading命令,用于div的loading加載,下面這篇文章主要給大家介紹了關(guān)于vue使用Vue.extend方法仿寫個loading加載中效果的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • vue+element-ui+ajax實現(xiàn)一個表格的實例

    vue+element-ui+ajax實現(xiàn)一個表格的實例

    下面小編就為大家分享一篇vue+element-ui+ajax實現(xiàn)一個表格的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 通用vue組件化展示列表數(shù)據(jù)實例詳解

    通用vue組件化展示列表數(shù)據(jù)實例詳解

    組件化開發(fā)能大幅提高應(yīng)用的開發(fā)效率、測試性、復(fù)用性等,下面這篇文章主要給大家介紹了關(guān)于通用vue組件化展示列表數(shù)據(jù)的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • Vue實現(xiàn)Tab標(biāo)簽路由效果并用Animate.css做轉(zhuǎn)場動畫效果的代碼

    Vue實現(xiàn)Tab標(biāo)簽路由效果并用Animate.css做轉(zhuǎn)場動畫效果的代碼

    這篇文章主要介紹了Vue實現(xiàn)Tab標(biāo)簽路由效果,并用Animate.css做轉(zhuǎn)場動畫效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Vue編譯器源碼分析compileToFunctions作用詳解

    Vue編譯器源碼分析compileToFunctions作用詳解

    這篇文章主要為大家介紹了Vue編譯器源碼分析compileToFunctions作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07

最新評論