【物联网之·协议·MQTT】_mqtt 客户端重连频率设置

四、MQTT的基本概念

1.MQTT的主题和主题过滤器

在MQTT当中,消息是没有消息队列这一概念,那它是怎么隔离区分各种繁杂的消息呢,这里就涉及到 主题 概念,不同的主题可被不同的订阅者订阅,发布者可以发布不同的主题消息,从而将消息进行一个隔离区分。MQTT 协议规定主题是 UTF-8 编码的字符串。

命名规则:

  • 所有的主题名必须至少包含一个字符
  • 主题名是大小写敏感的。
  • 主题名可以包含空格字符。
  • 主题名以前置或后置斜杠 / 区分。
  • 只包含斜杠 / 的主题名是合法的
  • 主题名不能包含 null 字符(Unicode U+0000)

MQTT 主题通配符包含单层通配符 “+” 及多层通配符 “#”,主要用于客户端一次订阅多个主题。

  • 单层通配符

如客户端订阅AAA/+/CCC主题消息,则会收到AAA/1/CCC,AAA/2/CCC,…,AAA/N/CCC主题消息

  • 多层通配符

如客户端订阅AAA/#主题消息,则会收到AAA,AAA/BBB,AAA/BBB/CCC主题消息

  • $开头的主题为系统主题

注意: 通配符只能用于订阅,不能用于发布。

2.MQTT的会话和保留消息

3.MQTT的消息格式和负载

  • 固定头(Fixed header),存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识;
  • 可变头(Variable header),存在于部分MQTT数据包中,数据包类型决定了可变头是否-存在及其具体内容;
  • 消息体(Payload),存在于部分MQTT数据包中,表示客户端收到的具体内容;
    在这里插入图片描述
3.1 MQTT固定头

在这里插入图片描述

3.1.1 MQTT消息类型 (Message type)
  • byte 1(bits7~4)
  • 相于一个4位的无符号值,类型如下:
    在这里插入图片描述
3.1.2 标识位 (DUP)
  • byte 1(bits3~0)

  • 在不使用标识位的消息类型中,标识位被做为保留位。如果收到无效的标志时,接收端必须关闭网络连接:
    在这里插入图片描述

  • DUP:发布消息的副本。用来在保证消息的可靠传输,如果设置为 1,则在下面的变长中增加MessageId,并且需要回复确认,以保证消息传输完成,但不能用于检测消息重复发送。

  • QoS发布消息的服务质量(前面已经做过介绍),即:保证消息传递的次数

    • 00:最多一次,即:<=1
    • 01:至少一次,即:>=1
    • 10:一次,即:=1
    • 11:预留
  • RETAIN

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值