說明
我為了后期能夠快速的讓小程序實現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