comment here
This commit is contained in:
@@ -204,7 +204,7 @@ end
|
||||
"""
|
||||
function mqttReconnect!(client::mqttClient)
|
||||
if client.connectStatus == false
|
||||
Mosquitto.disconnect(client) # disconnect to release port before attemping new connection
|
||||
Mosquitto.disconnect(client.clientInstance) # disconnect to release port before attemping new connection
|
||||
|
||||
if client.userName === nothing # check if the member needs username/password
|
||||
result = Mosquitto.connect(client.clientInstance, client.broker, client.port)
|
||||
@@ -239,16 +239,26 @@ end
|
||||
"""
|
||||
mqtt communication loop, call this function manually
|
||||
"""
|
||||
function mqttRun(client::mqttClient)
|
||||
function mqttRun(client::mqttClient, userMsgHandler::Function)
|
||||
mqttLoop!(client)
|
||||
mqttCheckConnection!(client)
|
||||
mqttReconnect!(client)
|
||||
mqttSubOnConnect!(client)
|
||||
mqttOnmessage!(client, userMsgHandler)
|
||||
end
|
||||
|
||||
|
||||
# What to do if there is a message
|
||||
function mqttOnmessage!(client::mqttClient, msgHandler::Function)
|
||||
"""
|
||||
userMsgHandler. A user defined function in user space.
|
||||
|
||||
# Example
|
||||
|
||||
function mqttMsgHander(topic::String, payload)
|
||||
# this function access workSpace by global variable and do something with msg
|
||||
end
|
||||
|
||||
"""
|
||||
function mqttOnmessage!(client::mqttClient, userMsgHandler::Function)
|
||||
nmessages = Base.n_avail(get_messages_channel())
|
||||
nmessages == 0 && return 0
|
||||
|
||||
@@ -260,7 +270,7 @@ function mqttOnmessage!(client::mqttClient, msgHandler::Function)
|
||||
_ = take!(get_messages_channel()) # discard new arrival package
|
||||
end
|
||||
elseif timepass > 1 && client.retainedMsgCleared == false
|
||||
workDict[:retainedMsgCleared] = true
|
||||
client.retainedMsgCleared = true
|
||||
println("retained mqtt messages cleared")
|
||||
else
|
||||
for i = 1:nmessages
|
||||
@@ -270,12 +280,14 @@ function mqttOnmessage!(client::mqttClient, msgHandler::Function)
|
||||
payload = vecToDict(pkg.payload) # payload in Dict format
|
||||
|
||||
# Do something with the message
|
||||
msgHandler(topic, payload)
|
||||
println("call userMsgHandler")
|
||||
userMsgHandler(topic, payload) # user defined function in user space. How to handle msg
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function publish(client::mqttClient, msg::Dict, pubtopic::String="")
|
||||
Mosquitto.publish(client.clientInstance, pubtopic, JSON3.write(msg))
|
||||
end
|
||||
@@ -284,24 +296,6 @@ end
|
||||
"""
|
||||
request function check msg for additional communication info in addition to publish()
|
||||
"""
|
||||
# function request(client::mqttClient, msg::Dict; pubtopic::String="")
|
||||
# if pubtopic != ""
|
||||
# Mosquitto.publish(client.clientInstance, pubtopic, JSON3.write(msg))
|
||||
# elseif msg[:msgMeta][:sendto] != ""
|
||||
# Mosquitto.publish(client.clientInstance, msg[:msgMeta][:sendto], JSON3.write(msg))
|
||||
# else
|
||||
# if length(client.pubtopic) != 0
|
||||
|
||||
# for (k, topic) in pairs(client.pubtopic)
|
||||
# println("pub to $k")
|
||||
# Mosquitto.publish(client.clientInstance, topic, JSON3.write(msg))
|
||||
# end
|
||||
# else
|
||||
# error("publish topic not defined")
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
|
||||
function request(client::mqttClient, msg::Dict; pubtopic::String="")
|
||||
pubto = Vector{String}()
|
||||
if pubtopic != ""
|
||||
|
||||
Reference in New Issue
Block a user