ESP8266 SDK開發 - 4.05 - 自建MQTT服務器篇-編寫微信小程序連接MQTT服務器程序


<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/Learn8266ForSDK" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 

注意

如果想自己實現MQTT服務器供微信小程序連接,建議購買雲主機(電腦)

https://www.cnblogs.com/yangfengwu/p/13208227.html

以下教程有Windows版和Linux版,下面的教程是用來做產品項目的

配置起來周期比較長,需要等2個星期才會審核完成!

對於學習開發者使用我提供的MQTT服務器地址信息測試就可以.

 

 

 

 

下載MQTT包

https://unpkg.com/mqtt@3.0.0/dist/mqtt.min.js

 

按下鍵盤的CTRL + A 全選

然后按下鍵盤的 CTRL + C 復制

 

 

 

建一個名字為 mqtt.min 后綴名為.js的文件,然后把上面的內容復制進去即可

我已經復制好了

 

 

 

 

另外我給用戶封裝了一個mqtt.js文件

這個文件是對MQTT操作函數的再一次封裝

使得用戶能夠快速的和MQTT通信

 

 

 

 

 

 

 

 

新建微信小程序工程

1.新建一個文件夾用來保存微信小程序工程 名字隨意

 

 

 

2.新建微信小程序工程

注:目錄選擇剛才新建的文件夾

 

 

 

 

3.把mqtt.min.js 和 mqtt.js文件放到utils目錄

 

 

 

4.微信小程序選擇不校驗域名

 

 

 

5.在軟件啟動的地方調用一次連接函數

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

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

MQTT.ConnectMqtt();//鏈接MQTT

 

 

 

6.默認連接我的服務器

 

 

7.保存編譯一下,如果日志打印 connect 說明連接成功

 

 

 

8.訂閱主題

建議用戶使用下面的定時器輪訓方式訂閱主題

 

 

 

 

/**
* @brief //訂閱主題
* @param topic 訂閱的主題
* @param q 消息等級
* @param SuccessFun 訂閱成功回調函數 SuccessFun(e)
* @param FailureFun 訂閱失敗回調函數 FailureFun(e)
* @example      subscribeTopic("1111",0,SuccessFun,FailureFun);
**

 

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");//啟動定時器,循環訂閱主題,直至訂閱成功

 

 

 

9.設置接收消息回調

 

 

 

    /**設置接收消息回調*/
    MQTT.SetonMessageArrivedCallBack(
      function(arg){
        console.log("主題:" + arg.destinationName + " 消息:" + arg.payloadString);
      }
    )

 

 

10.打開一個MQTT調試助手,可以發送數據給微信小程序

 

 

 

 

 

 

11.微信小程序使用MQTT發送數據

在接收回調函數里面發送數據出去,發布的主題:2222   發送的數據:msg=====

 

 

 

 

 

        MQTT.publishTopic(
          "2222", //主題
          "msg=====", //消息
          0, //消息等級
          false, //是否需要服務器保留消息
          function (arg) { //發送成功回調
            console.log("發送數據成功");
          }
        );

 

 

 

 

 

 

 

 

 

 

 

 

 

其它

1.一次性訂閱多個主題

注:下面是訂閱兩個主題

訂閱消息等級為0的主題topic

訂閱消息等級為1的主題 device/1111 

//訂閱多個主題
      MQTT.subscribeTopicMultiple(
        { 'topic': { qos: 0 }, 'device/1111': { qos: 1 } }, 

          function (){
            console.log("訂閱成功");
          }, 
          function () {
            console.log("訂閱失敗");
          }
        );

 

2.小程序和服務器斷開連接

    MQTT.SetonConnectionLostCallBack(function (arg) {
      //offline / reconnect / disconnect / close / error
      if (arg == 'offline') console.log('斷線');
      else if (arg == 'reconnect') console.log('嘗試重連');
      
    });

 

3.小程序和服務器連接上

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

 

4.取消訂閱主題

列如:取消訂閱主題 1111

MQTT.unSubscribeTopic('1111', function () {});

 

 


免責聲明!

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



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