ESA2GJK1DH1K微信小程序篇: 小程序實現MQTT封包源碼使用說明


 

 

 

說明

  我為了后期能夠快速的讓小程序實現MQTT,我做了一個MQTT的封裝.

  功能的封裝有助於后期快速的開發,還方便咱維護.

  我后期的所有代碼皆使用此封裝庫,

  這一節,我就詳細的介紹我封裝的MQTT.js的使用

 

新建工程,拷貝文件

 

 

 

 

 

 

 

 

拷貝第一節或者第二節測試代碼里面的以下三個文件到新工程

 

 

 

 

 

 

 

 

 說明

 

 

 

 

 

連接MQTT

根據自己的MQTT服務器更改以下信息

 

 

 

 

 

 

 

 

 

在軟件啟動的地方寫上連接

注:只要寫上連接,內部自動斷線重連

var MQTT = require("./utils/mqtt.js");

App({
  onLaunch: function () {

    MQTT.ConnectMqtt();//鏈接MQTT

 

 

 

 

 

成功連接MQTT

 

 

 

測試斷線重連

 

 

 

 

 

 

訂閱主題

      MQTT.subscribeTopic(
        "1111", //訂閱1111
        0,//消息等級
        function () {
          console.log("訂閱成功");
        }, function () {
          console.log("訂閱失敗");
        }
      );//訂閱主題

 

建議

var MQTT = require("../../utils/mqtt.js");
var TimeNumber;//循環訂閱設備主題定時器

    //訂閱設備發布的主題
    try { clearInterval(TimeNumber); } catch (e) { }
    TimeNumber = setInterval(function()
    {

      MQTT.subscribeTopic(
        "1111", //訂閱1111
        0,//消息等級
        function () {
          console.log("訂閱成功");
          clearInterval(TimeNumber);//訂閱成功清除定時
        }, function () {
          console.log("訂閱失敗");
        }
      );//訂閱主題

    }, 1000, "null");//啟動定時器,循環訂閱主題,直至訂閱成功

 

 

 

 

取消訂閱主題

    MQTT.unSubscribeTopic(
      "1111", //取消訂閱的主題
      function()
      { 
        console.log("取消訂閱成功"); 
      }
    );

 

 

 

發布消息

 

發布字符串消息

    MQTT.publishTopic(
      "222", //發布的主題
      "message", //發布的消息
      0, //消息等級
      false, //不需要服務器保留
      function()//發送成功回調
      {
        console.log("發送消息成功");
      }
    );

 

 

發布16進制消息

0xAA 0x88 0xFF 0xdd

    MQTT.publishStringToHex(
      "222", //發布的主題
      "AA 88 FF dd", //發布的消息
      0, //消息等級
      false, //不需要服務器保留
      function ()//發送成功回調
      {
        console.log("發送消息成功");
      }
    );

 

 

接收消息

    MQTT.SetonMessageArrivedCallBack(
      function (arg)
      {
        console.log(arg.destinationName + "    " + arg.payloadString); 
      }
    );//注冊接收消息回調函數

 

注意:如果接收的數據有16進制,有字符串,需要加入try

    MQTT.SetonMessageArrivedCallBack(
      function (arg) {
        try{
          console.log(arg.destinationName + "    " + arg.payloadString);//處理字符串消息
        }catch(e){
          console.log(e);
        }

        try {
          console.log(arg.payloadBytes);//處理16進制消息
          let byt = arg.payloadBytes;
        } catch (e) {
          console.log(e);
        }

      }
    );//注冊接收消息回調函數

 

 

監聽MQTT狀態

掉線

    MQTT.SetonConnectionLostCallBack(function(arg){
      console.log(arg);//打印鏈接失敗詳細信息
    });//軟件掉線

 

上線

    MQTT.SetonConnectionSuccessCallBack(function(){
      console.log("連接上MQTT");
    });//連接上MQTT

 


免責聲明!

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



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