在微信小程序中使用mqtt服務


因為需求的關系,需要在小程序中使用mqtt來進行tcp的長連接,實時監聽設備的返回狀態。

js中連接mqtt服務器是通過websocket來實現的,我在網上找了2個庫,一個是eclipse開發的paho-mqtt。

項目地址:https://github.com/eclipse/paho.mqtt.javascript

一個是個人開發的mqttjs,項目地址:https://github.com/mqttjs/MQTT.js

比較了下,mqqtt.js比較靈活對小程序也有很好的支持,所以采用了這個庫來做連接。

於是看了下他自己的介紹,直接拿過來試用了下。因為是直接用在小程序中不需要那么復雜,它提供了靜態的cdn下載,

直接打開鏈接復制到工程中直接用就可以,不用更改。cdn地址:https://unpkg.com/mqtt@2.18.8/dist/mqtt.js min版:https://unpkg.com/mqtt@2.18.8/dist/mqtt.min.js;

使用起來也很簡單,直接貼代碼

function connectMq(){

    // 連接選項
    const options = {
      connectTimeout: 4000, // 超時時間
      // 認證信息 按自己需求填寫
      clientId: '',
      username: 'xxx',
      password: 'xxx',
    }
    let phone = app.globalData.myInfo.TelPhone;
    const client = mqtt.connect('wx://xx.xxxxxxx', options)

    client.on('reconnect', (error) => {
      console.log('正在重連:', error)
    })

    client.on('error', (error) => {
      console.log('連接失敗:', error)
    })

    client.on('connect', (e) => {
      console.log('成功連接服務器111')
        //訂閱一個主題
      client.subscribe('phone_' + phone, { qos: 0 }, function (err) {
        if (!err) {
          //client.publish('123', 'Hello mqtt')
          console.log("訂閱成功")
        }

      })
    })
    //監聽mq的返回
    client.on('message', function (topic, message, packet) {
      // message is Buffer
      console.log("packet", packet.payload.toString())
      client.end()
    })



}    

 這里着重要注意的連接地址的寫法

//mqtt.connect('wx://xxxxxxxxxx', options);
//wx://   xx.xx.xxxxxxx
//協議版本  鏈接地址 
//微信小程序這個版本 作者自己封裝了一層 wx表示普通的ws協議連接 wxs表示加密之后的wss協議連接。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM