2024年3月24日发(作者:)
竭诚为您提供优质文档/双击可除
mqtt协议,流程图
篇一:mqtt
mqtt协议笔记之消息流网络故障mqtt协议假定客户端
和服务器端稳定情况一般,彼此之通信管道不可靠,一旦客
户端网络断开,情况就会很严重,很难恢复原状。但别忘记,
很多客户端会有永久性存储设备支持,比如闪存Rom、存储
卡等,在通信出现异常的情况下可以用于保存关键数据或状
态信息等。总之,异常网络情况很复杂,只能小心处理之。
消息重发策略在qos>0情况下,publish、pubRel、subscRibe、
unsubscRibe等类型消息在发送者发送完之后,需要等待一
个响应消息,若在一个指定时间段内没有收到,发送者可能
需要重试。重发的消息,要求dup标记要设置为1.等待响应
的超时应该在消息成功发送之后开始算起,并且等待超时应
该是可以配置选项,以便在下一次重试的时候,适当加大。
比如第一次重试超时10秒,下一次可能为20秒,再一次重
试可能为60秒呢。当然,还要有一个重试次数限制的。还
1 7
有一种情况,客户端重新连接,但未在可变头部中设置
cleansession标记,但双方(客户端和服务器端)都应该重试
先前未发送的动态消息(in-flightmessages)。客户端不被
强制要求发送未被确认的消息,但服务器端就得需要重发那
些未被去确认的消息。qoslevel决定的消息流mqtt3.1协议
在"4.1qualityofservicelevelsandflows"章节中,仅仅讨
论了客户端到服务器的发布流程,不太完整。因为决定消息
到达率,能够提升发送质量的,应该是服务器发布publish
消息到订阅者这一消息流方向。qoslevel0至多发送一次,
发送即丢弃。没有确认消息,也不知道对方是否收到。
clientmessageanddirectionqos=0publish---------->Rec
eption:
clientqos=1dup=0messageid=xaction:storemessagemessa
geanddirectionactions:publish---------->serverstore
messagepublishmessagetosubscribersdeletemessageRece
ption:>=1action:discardmessagepubacksubscriberstore
messagemakemessageavailableReception:>=1pubackserve
r方向,会有一个总体印象:
clientqos=2dup=0messageid=xaction:storemessagemessa
geanddirectionserveraction(a)storemessageorpublish-
--------->actions(b):storemessageidpublishmessageto
subscriberspubRec
2 7
clientmessageanddirectionactions(a):serverpublishme
ssagetosubscribersdeletemessageoraction(b):deleteme
ssageidmessageid=xpubRel----(mqtt协议,流程
图)------>action:discardmessagepubcompsubscriber:
serverqos=2dup=0messageid=xmessageanddirectionpubli
sh---------->pubRecpubcomppublish2---------->publis
h3---------->pubRec1
clientmessageanddirectionserver---------->pubRec3pu
bcomp1pubcomp2服务器,进入的字节流,逐个字节/单位读
取,可还原成一个具体的消息对象(解码的过程)。要发送
到客户端的消息对象,转换(编码)成字节流,然后由tcp
通道流转到接收者。
篇二:mqtt协议简记
mqtt-mqtelemetrytransport
轻量级的machine-to-machine通信协议。
3 7
发布评论