|
|
@@ -0,0 +1,70 @@
|
|
|
+--- 模块功能:MQTT客户端数据发送处理
|
|
|
+-- @author openLuat
|
|
|
+-- @module mqtt.mqttOutMsg
|
|
|
+-- @license MIT
|
|
|
+-- @copyright openLuat
|
|
|
+-- @release 2018.03.28
|
|
|
+
|
|
|
+
|
|
|
+module(...,package.seeall)
|
|
|
+
|
|
|
+--数据发送的消息队列
|
|
|
+local msgQueue = {}
|
|
|
+
|
|
|
+local function insertMsg(topic,payload,qos,user)
|
|
|
+ table.insert(msgQueue,{t=topic,p=payload,q=qos,user=user})
|
|
|
+ sys.publish("APP_SOCKET_SEND_DATA")
|
|
|
+end
|
|
|
+
|
|
|
+local function pubQos0TestCb(result)
|
|
|
+ log.info("mqttOutMsg.pubQos0TestCb",result)
|
|
|
+ if result then sys.timerStart(pubQos0Test,10000) end
|
|
|
+end
|
|
|
+
|
|
|
+function pubQos0Test()
|
|
|
+ insertMsg("/qos0topic","你好",0,{cb=pubQos0TestCb})
|
|
|
+end
|
|
|
+
|
|
|
+local function pubQos1TestCb(result)
|
|
|
+ log.info("mqttOutMsg.pubQos1TestCb",result)
|
|
|
+ if result then sys.timerStart(pubQos1Test,20000) end
|
|
|
+end
|
|
|
+
|
|
|
+function pubQos1Test()
|
|
|
+ insertMsg("/中文qos1topic","中文qos1data",1,{cb=pubQos1TestCb})
|
|
|
+end
|
|
|
+
|
|
|
+--- 初始化“MQTT客户端数据发送”
|
|
|
+-- @return 无
|
|
|
+-- @usage mqttOutMsg.init()
|
|
|
+function init()
|
|
|
+ pubQos0Test()
|
|
|
+ -- pubQos1Test()
|
|
|
+end
|
|
|
+
|
|
|
+--- 去初始化“MQTT客户端数据发送”
|
|
|
+-- @return 无
|
|
|
+-- @usage mqttOutMsg.unInit()
|
|
|
+function unInit()
|
|
|
+ sys.timerStop(pubQos0Test)
|
|
|
+ sys.timerStop(pubQos1Test)
|
|
|
+ while #msgQueue>0 do
|
|
|
+ local outMsg = table.remove(msgQueue,1)
|
|
|
+ if outMsg.user and outMsg.user.cb then outMsg.user.cb(false,outMsg.user.para) end
|
|
|
+ end
|
|
|
+end
|
|
|
+
|
|
|
+
|
|
|
+--- MQTT客户端数据发送处理
|
|
|
+-- @param mqttClient,MQTT客户端对象
|
|
|
+-- @return 处理成功返回true,处理出错返回false
|
|
|
+-- @usage mqttOutMsg.proc(mqttClient)
|
|
|
+function proc(mqttClient)
|
|
|
+ while #msgQueue>0 do
|
|
|
+ local outMsg = table.remove(msgQueue,1)
|
|
|
+ local result = mqttClient:publish(outMsg.t,outMsg.p,outMsg.q)
|
|
|
+ if outMsg.user and outMsg.user.cb then outMsg.user.cb(result,outMsg.user.para) end
|
|
|
+ if not result then return end
|
|
|
+ end
|
|
|
+ return true
|
|
|
+end
|