MQTT_笔记

MQTT测试工具:

MQTT Helper:http://mqtt-helper.mybluemix.net/


参考文章:

http://www.cfanz.cn/index.php?c=article&a=read&id=311967


C语言实现MQTT客户端

C/C++ MQTT Embedded Clients: https://www.eclipse.org/paho/clients/c/embedded/


MQTT使用标准端口吗?

TCP/IP的1833端口是IANA(互联网数字分配机构)为MQTT保留的端口号,同时也注册了8883端口用于MQTT在SSL上的传输。


MQTT支持安全传输吗?

可以在3.1版本的MQTT协议中在传输包中传输用户名和密码,使用SSL加密处理(显著增加网络开销)


SUBSCRIBE

client在成功建立TCP连接后,发送connect消息,得到Server授权允许建立连接的CONNACK消息后,client发送subscribe消息,订阅topic主题列表(至少一个主题)

订阅者的Topic name支持通配符 # 和 + :

1 #支持一个主题内任意级别话题

2 +只匹配一个主题级别的通配符

finance/stock/#
finance/sotkc/ibm/+

订阅部分,共有四个消息,分别一一对应。

命令响应备注建议
SUBSCRIBESUBACK协议没有涉及最多运行订阅TOPIC数目,隐藏的隐患建议至多10个
UNSUBSCRIBEUNSUBACK是否可以退订所有订阅,不详建议保留至少一个Topic

固定头部+可变头部+消息体


1) MessageType

public $operations=array(  
         "MQTT_CONNECT"=>1,//请求连接  
         "MQTT_CONNACK"=>2,//请求应答  
         "MQTT_PUBLISH"=>3,//发布消息  
         "MQTT_PUBACK"=>4,//发布应答  
         "MQTT_PUBREC"=>5,//发布已接收,保证传递1  
         "MQTT_PUBREL"=>6,//发布释放,保证传递2  
         "MQTT_PUBCOMP"=>7,//发布完成,保证传递3  
         "MQTT_SUBSCRIBE"=>8,//订阅请求  
         "MQTT_SUBACK"=>9,//订阅应答  
         "MQTT_UNSUBSCRIBE"=>10,//取消订阅  
         "MQTT_UNSUBACK"=>11,//取消订阅应答  
         "MQTT_PINGREQ"=>12,//ping请求  
         "MQTT_PINGRESP"=>13,//ping响应  
         "MQTT_DISCONNECT"=>14//断开连接  
        );   

2) DUP flag

 其是用来在保证消息传输可靠的,如果设置为1,则在下面的变长头部里多加MessageId,并需要回复确认,保证消息传输完成,但不能用于检测消息重复发送。

3) Qos

00表示最多一次 即<=1 ,无所谓消息丢失

01表示至少一次  即>=1, 确保消息到达,但可能出现消息重复

10表示一次,即==1 确保消息只到达一次,用于计费系统,消息丢失和重复都可能导致错误结果

11保留后用

4) Retain

 主要用于PUBLISH(发布态)的消息,表示服务器要保留这次推送的信息,如果有新的订阅者出现,就把这消息推送给它。如果不设那么推送至当前订阅的就释放了。



LWT(Last Will & Testament)最后遗嘱

MQTT本身就是为信号不稳定的网络设计的,所以难免一些客户端会无故的和Broker断开连接。 

当客户端连接到Broker时,可以指定LWT,Broker会定期检测客户端是否有异常。 
当客户端异常掉线时,Broker就往连接时指定的topic里推送当时指定的LWT消息。 
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值