<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.訂閱主題
建議用戶使用下面的定時器輪訓方式訂閱主題
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 () {});