一、译文
| mqtt.Client() | 创建一个MQTT客户端. |
| mqtt.client:close() | 关闭与服务器之间的连接. |
| mqtt.client:connect() | 根据主机名、端口号和安全配置连接服务器. |
| mqtt.client:lwt() | 创建遗嘱 (可选). |
| mqtt.client:on() | 为事件创建回调函数. |
| mqtt.client:publish() | 发送一条消息. |
| mqtt.client:subscribe() | 订阅一个或多个主题. |
| mqtt.client:unsubscribe() | 取消订阅一个或多个主题. |
1、mqtt.Client()
创建一个MQTT客户端。
语法(PS:中括号内为可选参数)
mqtt.Client(clientid, keepalive[, username, password, cleansession])
参数
clientid客户端idkeepalive心跳秒数username用户名password密码cleansession清除session 0/1 表示否/是
返回
Mqtt客户端
示例代码
2、mqtt.client:close()
关闭与服务器的连接语法 mqtt:close()
参数 无
返回 成功true,失败false
host主机名, 域名或 IP (字符串)port服务器端口(数字), 默认1883secure0/1 表示false/true, 默认 0. 详情查看文档 net module.autoreconnect0/1表示false/true,默认 0 (断线是否重连)function(client)连接服务器成功时的回调函数function(client, reason)连接服务器失败时的回调函数
| 常量 | 值 | 描述 |
|---|---|---|
mqtt.CONN_FAIL_SERVER_NOT_FOUND | -5 | 未找到服务器(或没开端口) |
mqtt.CONN_FAIL_NOT_A_CONNACK_MSG | -4 | 返回消息回应不是Mqtt协议 |
mqtt.CONN_FAIL_DNS | -3 | DNS错误 |
mqtt.CONN_FAIL_TIMEOUT_RECEIVING | -2 | 等待响应超时 |
mqtt.CONN_FAIL_TIMEOUT_SENDING | -1 | 尝试发送连接消息超时 |
mqtt.CONNACK_ACCEPTED | 0 | 没有错误. 注意: 这不会触发错误回调函数. |
mqtt.CONNACK_REFUSED_PROTOCOL_VER | 1 | 服务器MQTT版本不是3.1.1. |
mqtt.CONNACK_REFUSED_ID_REJECTED | 2 | ClientID被服务器拒绝. (查看mqtt.Client()) |
mqtt.CONNACK_REFUSED_SERVER_UNAVAILABLE | 3 | 服务不可用. |
mqtt.CONNACK_REFUSED_BAD_USER_OR_PASS | 4 | 用户名或密码错误. |
mqtt.CONNACK_REFUSED_NOT_AUTHORIZED | 5 | 用户名没经过认证. |
4、mqtt.client:lwt()
创建遗嘱(可选),服务器将会发送一条 qos = 0, retain = 0, 内容为"offline"的消息到"/lwt"主题,如果没收到客户端发送的心跳数据包(掉线)。topic将要发送遗嘱消息的主题 (字符串)message遗嘱消息, (缓存 或 字符串)qos消息质量, 默认 0retain保留标志, 默认 0
5、mqtt.client:on()
event可以是 "connect", "message" 或者 "offline"function(client[, topic[, message]])回调函数。第一个参数为client、如果事件为 "message",那么第二个、第三个参数分别是主题和接收到的消息
6、mqtt.client:publish()
topic要发送消息的主题 (字符串)message消息, (缓存 或 字符串)qos消息质量retain消息保留标志function(client)可选的回调函数。当消息发送成功(服务器传来PUBACK响应)则触发该事件。注意:当多次调用publish() 函数,所有的发送指令将会调用最后定义的回调函数。
mqtt:subscribe(topic, qos[, function(client)]) 或
mqtt:subscribe(table[, function(client)])
mqtt:unsubscribe(topic[, function(client)]) 或
mqtt:unsubscribe(table[, function(client)])
topic主题 (字符串)table要取消订阅的'topic, qos'数组对function(client)取消订阅成功时的可选回调函数.注意:当多次调用unsubscribe() 函数,所有的取消订阅指令将会调用最后定义的回调函数。
MQTT Module
| Since | Origin / Contributor | Maintainer | Source |
|---|---|---|---|
| 2015-01-23 | Stephen Robinson, Tuan PM | Vowstar | mqtt.c |
The client adheres to version 3.1.1 of the MQTT protocol. Make sure that your broker supports and is correctly configured for version 3.1.1. The client is backwards incompatible with brokers running MQTT 3.1.
| mqtt.Client() | Creates a MQTT client. |
| mqtt.client:close() | Closes connection to the broker. |
| mqtt.client:connect() | Connects to the broker specified by the given host, port, and secure options. |
| mqtt.client:lwt() | Setup Last Will and Testament (optional). |
| mqtt.client:on() | Registers a callback function for an event. |
| mqtt.client:publish() | Publishes a message. |
| mqtt.client:subscribe() | Subscribes to one or several topics. |
| mqtt.client:unsubscribe() | Unsubscribes from one or several topics. |
mqtt.Client()
Creates a MQTT client.
Syntax
mqtt.Client(clientid, keepalive[, username, password, cleansession])
Parameters
clientidclient IDkeepalivekeepalive secondsusernameuser namepassworduser passwordcleansession0/1 forfalse/true
Returns
MQTT client
Example
-- init mqtt client without logins, keepalive timer 120s
m = mqtt.Client("clientid", 120)
-- init mqtt client with logins, keepalive timer 120sec
m = mqtt.Client("clientid", 120, "user", "password")
-- setup Last Will and Testament (optional)
-- Broker will publish a message with qos = 0, retain = 0, data = "offline"
-- to topic "/lwt" if client don't send keepalive packet
m:lwt("/lwt", "offline", 0, 0)
m:on("connect", function(client) print ("connected") end)
m:on("offline", function(client) print ("offline") end)
-- on publish message receive event
m:on("message", function(client, topic, data)
print(topic .. ":" )
if data ~= nil then
print(data)
end
end)
-- for TLS: m:connect("192.168.11.118", secure-port, 1)
m:connect("192.168.11.118", 1883, 0, function(client) print("connected") end,
function(client, reason) print("failed reason: "..reason) end)
-- Calling subscribe/publish only makes sense once the connection
-- was successfully established. In a real-world application you want
-- move those into the 'connect' callback or make otherwise sure the
-- connection was established.
-- subscribe topic with qos = 0
m:subscribe("/topic",0, function(client) print("subscribe success") end)
-- publish a message with data = hello, QoS = 0, retain = 0
m:publish("/topic","hello",0,0, function(client) print("sent") end)
m:close();
-- you can call m:connect again
MQTT Client
mqtt.client:close()
Closes connection to the broker.
Syntax
mqtt:close()
Parameters
none
Returns
true on success, false otherwise
mqtt.client:connect()
Connects to the broker specified by the given host, port, and secure options.
Syntax
mqtt:connect(host[, port[, secure[, autoreconnect]]][, function(client)[, function(client, reason)]])
Parameters
hosthost, domain or IP (string)portbroker port (number), default 1883secure0/1 forfalse/true, default 0. Take note of constraints documented in the net module.autoreconnect0/1 forfalse/true, default 0function(client)callback function for when the connection was establishedfunction(client, reason)callback function for when the connection could not be established
Returns
true on success, false otherwise
Connection failure callback reason codes:
| Constant | Value | Description |
|---|---|---|
mqtt.CONN_FAIL_SERVER_NOT_FOUND | -5 | There is no broker listening at the specified IP Address and Port |
mqtt.CONN_FAIL_NOT_A_CONNACK_MSG | -4 | The response from the broker was not a CONNACK as required by the protocol |
mqtt.CONN_FAIL_DNS | -3 | DNS Lookup failed |
mqtt.CONN_FAIL_TIMEOUT_RECEIVING | -2 | Timeout waiting for a CONNACK from the broker |
mqtt.CONN_FAIL_TIMEOUT_SENDING | -1 | Timeout trying to send the Connect message |
mqtt.CONNACK_ACCEPTED | 0 | No errors. Note: This will not trigger a failure callback. |
mqtt.CONNACK_REFUSED_PROTOCOL_VER | 1 | The broker is not a 3.1.1 MQTT broker. |
mqtt.CONNACK_REFUSED_ID_REJECTED | 2 | The specified ClientID was rejected by the broker. (Seemqtt.Client()) |
mqtt.CONNACK_REFUSED_SERVER_UNAVAILABLE | 3 | The server is unavailable. |
mqtt.CONNACK_REFUSED_BAD_USER_OR_PASS | 4 | The broker refused the specified username or password. |
mqtt.CONNACK_REFUSED_NOT_AUTHORIZED | 5 | The username is not authorized. |
mqtt.client:lwt()
Setup Last Will and Testament (optional). A broker will publish a message with qos = 0, retain = 0, data = "offline" to topic "/lwt" if client does not send keepalive packet.
Syntax
mqtt:lwt(topic, message[, qos[, retain]])
Parameters
topicthe topic to publish to (string)messagethe message to publish, (buffer or string)qosQoS level, default 0retainretain flag, default 0
Returns
nil
mqtt.client:on()
Registers a callback function for an event.
Syntax
mqtt:on(event, function(client[, topic[, message]]))
Parameters
eventcan be "connect", "message" or "offline"function(client[, topic[, message]])callback function. The first parameter is the client. If event is "message", the 2nd and 3rd param are received topic and message (strings).
Returns
nil
mqtt.client:publish()
Publishes a message.
Syntax
mqtt:publish(topic, payload, qos, retain[, function(client)])
Parameters
topicthe topic to publish to (topic string)messagethe message to publish, (buffer or string)qosQoS levelretainretain flagfunction(client)optional callback fired when PUBACK received. NOTE: When calling publish() more than once, the last callback function defined will be called for ALL publish commands.
Returns
true on success, false otherwise
mqtt.client:subscribe()
Subscribes to one or several topics.
Syntax
mqtt:subscribe(topic, qos[, function(client)]) mqtt:subscribe(table[, function(client)])
Parameters
topica topic stringqosQoS subscription level, default 0tablearray of 'topic, qos' pairs to subscribe tofunction(client)optional callback fired when subscription(s) succeeded. NOTE: When calling subscribe() more than once, the last callback function defined will be called for ALL subscribe commands.
Returns
true on success, false otherwise
Example
-- subscribe topic with qos = 0
m:subscribe("/topic",0, function(conn) print("subscribe success") end)
-- or subscribe multiple topic (topic/0, qos = 0; topic/1, qos = 1; topic2 , qos = 2)
m:subscribe({["topic/0"]=0,["topic/1"]=1,topic2=2}, function(conn) print("subscribe success") end)
mqtt.client:unsubscribe()
Unsubscribes from one or several topics.
Syntax
mqtt:unsubscribe(topic[, function(client)]) mqtt:unsubscribe(table[, function(client)])
Parameters
topica topic stringtablearray of 'topic, anything' pairs to unsubscribe fromfunction(client)optional callback fired when unsubscription(s) succeeded. NOTE: When calling unsubscribe() more than once, the last callback function defined will be called for ALL unsubscribe commands.
Returns
true on success, false otherwise
Example
-- unsubscribe topic
m:unsubscribe("/topic", function(conn) print("unsubscribe success") end)
-- or unsubscribe multiple topic (topic/0; topic/1; topic2)
m:unsubscribe({["topic/0"]=0,["topic/1"]=0,topic2="anything"}, function(conn) print("unsubscribe success") end)
本文详细介绍了一个遵循MQTT 3.1.1协议的客户端库,包括客户端的创建、连接、发布消息、订阅主题等核心功能及其使用方法。
3647

被折叠的 条评论
为什么被折叠?



