赞
踩
MQTT设计了一套保证消息稳定传输的机制,包括消息应答、存储和重传。在这套机制下,提供了三种不同层次QoS(Quality of Service):
QoS 是消息的发送方(Sender)和接受方(Receiver)之间达成的一个协议:
QoS0 代表,Sender 发送的一条消息,Receiver 最多能收到一次,也就是说 Sender 尽力向 Receiver 发送消息,如果发送失败,也就算了;
QoS1 代表,Sender 发送的一条消息,Receiver 至少能收到一次,也就是说 Sender 向 Receiver 发送消息,如果发送失败,会继续重试,
直到 Receiver 收到消息为止,但是因为重传的原因,Receiver 有可能会收到重复的消息;
QoS2 代表,Sender 发送的一条消息,Receiver 确保能收到而且只收到一次,也就是说 Sender 尽力向 Receiver 发送消息,
如果发送失败,会继续重试,直到 Receiver 收到消息为止,同时保证 Receiver 不会因为消息重传而收到重复的消息。
注意:
QoS是Sender和Receiver之间的协议,而不是Publisher和Subscriber之间的协议。换句话说,Publisher发布了一条QoS1的消息,只能保证Broker能至少收到一次这个消息;
而对于Subscriber能否至少收到一次这个消息,还要取决于Subscriber在Subscibe的时候和Broker协商的QoS等级。
连接到给定url和选项指定的代理并返回客户端对象mqtt.Client。
URL可以位于以下协议上:“mqtt”、“mqtts”、“tcp”、“tls”、“ws”、“wss”。URL也可以是由返回的对象URL.parse文件(),在这种情况下,两个对象被合并,即,可以通过URL和connect选项传递单个对象。
还可以使用以下内容指定服务器选项:[{host:‘localhost’,port:1883}。。。],在这种情况下,数组在每个连接处迭代。
有关所有MQTT相关选项,请参阅客户端对象的构造函数中options的选项。
Client类通过任意传输方法(TCP、TLS、WebSocket、ecc)将客户机连接到MQTT代理。
客户端自动处理以下内容:
topic:发布消息的主题
payload:要发布的消息
qos:消息等级
retain:保留消息标识
connect: function (connack) {} 连接成功回调
当client在连接时设置 Clean Session=1,即清除MQTT服务器中保存的会话,则 CONNACK 中 Session Present Flag 始终为 0,即这个会话是新的会话。
当client在连接时设置 Clean Session=0,则有两种情况,若服务器端存在这个clientid之前保留的额回话,则CONNACK 中的 Session Present Flag 为 1,否则为0.
reconnect: function () {} 重连回调
close: function () {} 断开连接回调
offline : function () {} 客户端离线回调
error: function(error){} 当客户端无法连接时发出(即connack rc!=0)或发生解析错误时。
以下TLS错误将作为错误事件发出:
ECONNREFUSED 连接被拒绝
ECONNRESET 连接重置
EADDRINUSE 地址正在使用
ENOTFOUND 找不到
end: function(){} 这个回调会在client.end()方法执行成功之后
message : function (topic, message, packet) {} 会在接收到订阅消息时进行回调
packetsend : function (packet) {} 当客户端发送数据包时进行回调
packetreceive: function (packet) {} 当客户端收到数据包是进行回调
向一个主题发送信息,参数列表:
订阅一个或者多个主题
topic是要订阅的字符串主题或要订阅的主题数组。它也可以是一个对象,它有主题名作为对象键,QoS作为值,
比如{test1’:{QoS:0},‘test2’:{QoS:1}。支持MQTT主题通配符(±表示单层,#-表示多层)
options:订阅选项(可选),可选项:
qos: QoS 等级,订阅等级,默认为0
callback :function (err, granted)
取消订阅
关闭客户端
从outgoing缓存中删除邮件。如果消息被删除,则调用传出回调时将出现错误(“Message removed”)。
调用此函数后,messageId将被释放并可重用。
使用相同的连接选项重新连接
使用背压支持处理消息,一次一个。随意重写,但始终调用回调,否则客户端将挂起。
如果客户端已连接,则设置为true。否则为假。
获取上一个已发送的信息的id
当客户端正在尝试重连时为true,否则为false
#1 3、 mqtt.Store(options)
在内存中实现的消息存储
将数据包添加到存储中,数据包就是任何包含messageid属性的内容,数据包存储后会调用回调函数
创建包含内存中所有数据包的流
从内存中移除数据包,当移除成功后,会调用回调函数
关闭存储
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。