mqtt.tcp(host, port, client, username, pswd, keepAlive,cleansession, reconnectTime)
mqtt.ssl() not ok
- 元表
mq:id()
mq:host(host)
mq:port(port)
mq:auth(client, username, pswd)
mq:will(topic, qos, ratain, msg)
mq:connect()
mq:close()
mq:pub(id)
mq:sub(id)
mq:sublist(id)
mq:stat(id)
mq:on(id)
mq:clean(id) invalid
创建mqtt对象,注意这里创建的是一个userdata对象,不是table,不可以对他二次赋值,如
local mq = mqtt.tcp(xxxx)
mq.flag = true -- 不能这样用
入参 |
说明 |
host |
string, 服务器ip或者域名 |
port |
int,端口 |
client |
string, cleintid |
username |
string, username |
pswd |
string, pswd |
keepAlive |
int, keepalive,单位ms |
cleansession |
int, 1或者0 |
reconnectTime |
int,断开后的重连间隔,单位ms |
返回 |
说明 |
obj |
对象, 创建的mqtt实例对象,但是不是一般的table,不能二次赋值 |
local host = "115.159.225.58"
local port = 1883
local client = "client"
local username = "admin"
local pswd = "admin"
local keepAlive = 200 * 1000 --单位ms
local cleansession = 1
local reconnectTime = 2000 --单位ms
local mqrtry = 10 -- 重连次数
-- 新建实例
mqttc = mqtt.tcp(host, port, client, username, pswd, keepAlive,
cleansession, reconnectTime)
获取mqtt的id
-- 新建实例
mqttc = mqtt.tcp(host, port, client, username, pswd, keepAlive,
cleansession, reconnectTime)
log.info("mqid", mq:id())
修改mqtt的host,服务器域名或者ip
入参 |
说明 |
host |
string, 服务器ip或者域名 |
返回 |
说明 |
host |
string, 修改后的服务器ip或者域名 |
-- 新建实例
mqttc = mqtt.tcp(host, port, client, username, pswd, keepAlive,
cleansession, reconnectTime)
log.info("mqid", mq:host("115.159.225.58"))
修改mqtt的端口
-- 新建实例
mqttc = mqtt.tcp(host, port, client, username, pswd, keepAlive,
cleansession, reconnectTime)
log.info("mqid", mq:port(1883))
修改mqtt的连接信息
入参 |
说明 |
client |
string, cleintid |
username |
string, username |
pswd |
string, pswd |
修改mqtt的遗嘱
入参 |
说明 |
topic |
string, 遗嘱主题 |
qos |
int, qos等级 |
ratain |
int, ratain 1或者0 |
msg |
string, 遗嘱消息 |
连接mqtt服务器
关闭mqtt连接
发布mqtt消息
入参 |
说明 |
topic |
string, 发布的主题 |
msg |
string, 发布的消息 |
添加一条订阅
入参 |
说明 |
topic |
string, 发布的主题 |
qos |
int, qos等级 |
-- 订阅主题
subqos = 1
mqttc:sub("/testtopic1", subqos)
mqttc:sub("/testtopic2", subqos)
批量订阅
入参 |
说明 |
topics |
table, 主题table {topic=qos} 格式 |
local subarray = {["/public/test1"] = 1, ["/public/test2"] = 1} -- {topic = qos}
mqttc:sublist(subarray)
获取mqtt连接状态
mqtt异步事件订阅
批量订阅
入参 |
说明 |
topic |
string, 事件, recv ,disconnect , error , recon |
无返回
-- 意外断开
local disconnectFunc = function()
log.warn("mqtt disconnect,wait reconnect", conretry, mqrtry)
linkled(0)
end
-- 重连handle
local reconnectFunc =
function(id, res) -- res指示是重连失败还是成功
if res then
-- 连接成功
linkled(1)
conretry = mqrtry -- 连续10次连不上,30s,重启
log.info("mqtt reconnect result", mqttc:stat())
else
-- 连接失败
linkled(0)
conretry = conretry - 1
log.info("mqtt reconnect failed", mqttc:stat())
if conretry == 0 then
-- 网络有问题,需要重启
sys.timerStart(sys.restart, 2000, "mqtt reconnect fail!")
end
end
end
local errorFunc = function(id)
-- body
log.error("mqtt error, chanel", id)
end
local recvFunc = function(id, topic, data)
-- body
log.info("订阅的消息-----:", topic)
-- 发布回去
-- mqttPubFun("/public/pub11", data)
end
-- 更新配置
-- mqttc:auth(client, username, pswd)
-- mqttc:host(host)
-- mqttc:port(port)
mqttc:on("disconnect", disconnectFunc)
mqttc:on("recon", reconnectFunc)
mqttc:on("error", errorFunc)
mqttc:on("recv", recvFunc)
log.info("mqtt start connect!")