MQTT协议原理

2.1 MQTT 协议实现方式
实现 MQTT 协议需要客户端和服务器端通讯完成,在通讯过程中, MQTT 协议中有三种身份:发布者
Publish )、代理( Broker )(服务器)、订阅者( Subscribe )。其中,消息的发布者和订阅者都是客户端,消
息代理是服务器,消息发布者可以同时是订阅者。
MQTT 传输的消息分为:主题( Topic )和负载( payload )两部分:
1 Topic ,可以理解为消息的类型,订阅者订阅( Subscribe )后,就会收到该主题的消息内容
payload );
2 payload ,可以理解为消息的内容,是指订阅者具体要使用的内容。
2.2 网络传输与应用消息
MQTT 会构建底层网络传输:它将建立客户端到服务器的连接,提供两者之间的一个有序的、无损的、基于字
节流的双向传输。
当应用数据通过 MQTT 网络发送时, MQTT 会把与之相关的服务质量( QoS )和主题名( Topic )相关连。
2.3 MQTT 客户端 一个使用 MQTT 协议的应用程序或者设备,它总是建立到服务器的网络连接。客户端可以:
1 )发布其他客户端可能会订阅的信息;
2 )订阅其它客户端发布的消息;
3 )退订或删除应用程序的消息;
4 )断开与服务器连接。
2.4 MQTT 服务器端
MQTT 服务器以称为 " 消息代理 " Broker ),可以是一个应用程序或一台设备。它是位于消息发布者和订阅者
之间,它可以:
1 )接受来自客户的网络连接;
2 )接受客户发布的应用信息;
3 )处理来自客户端的订阅和退订请求;
4 )向订阅的客户转发应用程序消息。
2.5 发布 / 订阅、主题、会话
MQTT 是基于 发布 (Publish)/ 订阅 (Subscribe) 模式来进行通信及数据交换的,与 HTTP 请求 (Request)/ (Response) 的模式有本质的不同。
订阅者 (Subscriber) 会向 消息服务器 (Broker) 订阅一个 主题 (Topic) 。成功订阅后,消息服务器会将该主题 下的消息转发给所有的订阅者。
主题 (Topic) ‘/’ 为分隔符区分不同的层级。包含通配符 ‘+’ ‘#’ 的主题又称为 主题过滤器 (Topic Filters) ; 不 含通配符的称为 主题名 (Topic Names) 例如 :
发布者 (Publisher) 只能向 主题名 发布消息,订阅者 (Subscriber) 则可以通过订阅 主题过滤器’ 来通配多个主题名称。
 
'+': 表示通配一个层级,例如a/+,匹配a/x, a/y
'#': 表示通配多个层级,例如a/#,匹配a/x, a/b/c/d
注: ‘+’ 通配一个层级,’#’ 通配多个层级(必须在末尾)。
会话( Session
每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间, 也可能在客户端和服务器之间跨越多个连续的网络连接。
2.6 MQTT 协议中的方法
MQTT 协议中定义了一些方法(也被称为动作),来于表示对确定资源所进行操作。这个资源可以代表预先存
在的数据或动态生成数据,这取决于服务器的实现。通常来说,资源指服务器上的文件或输出。主要方法有:
1 CONNECT :客户端连接到服务器
2 CONNACK :连接确认
3 PUBLISH :发布消息
4 PUBACK :发布确认
5 PUBREC :发布的消息已接收
6 PUBREL :发布的消息已释放
7 PUBCOMP :发布完成
8 SUBSCRIBE :订阅请求
9 SUBACK :订阅确认
10 UNSUBSCRIBE :取消订阅
11 UNSUBACK :取消订阅确认
12 PINGREQ :客户端发送心跳
13 PINGRESP :服务端心跳响应
14 DISCONNECT :断开连接
15 AUTH :认证
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值