Luat模块应用手册-软件资料-Luat API手册-Luat script lib API-mqtt

本文详细介绍了MQTT客户端的使用方法,包括创建客户端实例、连接服务器、订阅和取消订阅主题、发布及接收消息以及断开连接等关键操作。通过具体的代码示例,展示了如何在物联网应用中实现可靠的数据交互。

mqtt

模块功能:MQTT客户端

mqtt.client(clientId, keepAlive, username, password, cleanSession, will, version)

创建一个mqtt client实例

  • 参数
传入值类型释义
stringclientId
number可选参数,默认为300,keepAlive 心跳间隔(单位为秒),默认300秒
string可选参数,默认为"",username 用户名,用户名为空配置为""或者nil
string可选参数,默认为"",password 密码,密码为空配置为""或者nil
number可选参数,默认为1,cleanSession 1/0
table可选参数,默认为nil,will 遗嘱参数,格式为{qos=, retain=, topic=, payload=}
string可选参数,默认为"3.1.1",version MQTT版本号
  • 返回值

table mqttc client实例

  • 例子
mqttc = mqtt.client("clientid-123")
mqttc = mqtt.client("clientid-123",200)
mqttc = mqtt.client("clientid-123",nil,"user","password")
mqttc = mqtt.client("clientid-123",nil,"user","password",nil,nil,"3.1")

mqttc:connect(host, port, transport, cert, timeout)

连接mqtt服务器

  • 参数
传入值类型释义
stringhost 服务器地址
paramport string或者number类型,服务器端口
string可选参数,默认为"tcp",transport “tcp"或者"tcp_ssl”
table可选参数,默认为nil,cert,table或者nil类型,ssl证书,当transport为"tcp_ssl"时,此参数才有意义。cert格式如下:
{
caCert = “ca.crt”, --CA证书文件(Base64编码 X.509格式),如果存在此参数,则表示客户端会对服务器的证书进行校验;不存在则不校验
clientCert = “client.crt”, --客户端证书文件(Base64编码 X.509格式),服务器对客户端的证书进行校验时会用到此参数
clientKey = “client.key”, --客户端私钥文件(Base64编码 X.509格式)
clientPassword = “123456”, --客户端证书文件密码[可选]
}
numbertimeout 可选参数,连接超时时间,单位秒,默认120秒
  • 返回值

result true表示成功,false或者nil表示失败

  • 例子
mqttc = mqtt.client("clientid-123", nil, nil, false); mqttc:connect("mqttserver.com", 1883, "tcp", 5)

mqttc:subscribe(topic, qos)

订阅主题

  • 参数
传入值类型释义
paramtopic,string或者table类型,一个主题时为string类型,多个主题时为table类型,主题内容为UTF8编码
param可选参数,默认为0,qos,number或者nil,topic为一个主题时,qos为number类型(0/1/2,默认0);topic为多个主题时,qos为nil
  • 返回值

bool true表示成功,false或者nil表示失败

  • 例子
mqttc:subscribe("/abc", 0) -- subscribe topic "/abc" with qos = 0
mqttc:subscribe({["/topic1"] = 0, ["/topic2"] = 1, ["/topic3"] = 2}) -- subscribe multi topic

mqttc:unsubscribe(topic)

取消订阅主题

  • 参数
传入值类型释义
paramtopic,string或者table类型,一个主题时为string类型,多个主题时为table类型,主题内容为UTF8编码
  • 返回值

bool true表示成功,false或者nil表示失败

  • 例子
mqttc:unsubscribe("/abc") -- unsubscribe topic "/abc"
mqttc:unsubscribe({"/topic1", "/topic2", "/topic3"}) -- unsubscribe multi topic

mqttc:publish(topic, payload, qos, retain)

发布一条消息

  • 参数
传入值类型释义
stringtopic UTF8编码的字符串
stringpayload 用户自己控制payload的编码,mqtt.lua不会对payload做任何编码转换
number可选参数,默认为0,qos 0/1/2, default 0
number可选参数,默认为0,retain 0或者1
  • 返回值

bool 发布成功返回true,失败返回false

  • 例子
mqttc = mqtt.client("clientid-123", nil, nil, false)
mqttc:connect("mqttserver.com", 1883, "tcp")
mqttc:publish("/topic", "publish from luat mqtt client", 0)

mqttc:receive(timeout, msg)

接收消息

  • 参数
传入值类型释义
numbertimeout 接收超时时间,单位毫秒
string可选参数,默认为nil,msg 可选参数,控制socket所在的线程退出recv阻塞状态
  • 返回值

result 数据接收结果,true表示成功,false表示失败
data 如果result为true,表示服务器发过来的包;如果result为false,表示错误信息,超时失败时为"timeout"
param msg控制退出时,返回msg的字符串

  • 例子
true, packet = mqttc:receive(2000)
false, error_message = mqttc:receive(2000)
false, msg, para = mqttc:receive(2000)

mqttc:disconnect()

断开与服务器的连接

  • 参数

  • 返回值

nil

  • 例子
mqttc = mqtt.client("clientid-123", nil, nil, false)
mqttc:connect("mqttserver.com", 1883, "tcp")
process data
mqttc:disconnect()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值