MQTT 协议快速入门
本专栏深入浅出地介绍了 MQTT 协议的各种特性,对每个协议特性都辅以具体代码进行讲解,并通过一个 IoT+AI 项目实战来具体展现 MQTT 在移动端、Web 端的使用,MQTT Broker 的架设等场景。
优惠券已抵扣
余额抵扣
还需支付
¥19.00
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
sufish
这个作者很懒,什么都没留下…
展开
-
开篇词:MQTT 协议简介
为什么要学 MQTT物联网曾被认为是继计算机、互联网之后,信息技术行业的第三次浪潮。随着基础通讯设施的不断完善,尤其是 5G 的出现,进一步降低了万物互联的门槛和成本。物联网本身也是 AI 和区块链应用很好的落地场景之一,各大云服务商也在纷纷上架物联网平台和服务。在 AI 和区块链的热潮过去之后,物联网很有可能成为下一个风口,在风口到来之前,提前进行一些知识储备,是很有必要的。物联网通讯是物联...原创 2020-10-28 16:06:11 · 920 阅读 · 0 评论 -
第01课:MQTT 的基础概念
在这一课中,让我们来学习 MQTT 协议的基本概念和术语,同时也会介绍一下本课程中代码的开发环境搭建。本节课核心内容包括:MQTT 协议的通信模型MQTT ClientMQTT BrokerMQTT 协议数据包1.1 MQTT 协议的通信模型就像我们在之前提到的,MQTT 的通信是通过发布/订阅的方式来实现的,消息的发布方和订阅方通过这种方式来进行解耦,它们没有直接地连接,它们需要...原创 2020-10-28 16:06:12 · 341 阅读 · 0 评论 -
第02课:建立到 MQTT Broker 的连接(一)
Client 在可以发布和订阅消息之前,必须先连接到 Broker,下面我们来看一下 Client 连接到 Broker 的流程。本节课核心内容:Client 连接到 Broker 的流程CONNECTCONNACK2.1 Client 连接到 Broker 的流程Client 建立到 Broker 的连接流程如下图所示:2.2 CONNECT连接的建立由 Client 端发起...原创 2020-10-28 16:06:13 · 581 阅读 · 0 评论 -
第03课:建立到 MQTT Broker 的连接(二)
在上一课中我们详细地了解了从 Client 到 Broker 的连接建立,接下来看一下如何关闭连接。本节课核心内容:Client 主动关闭连接Broker 主动关闭连接代码实践3.1 Client 主动关闭连接Client 主动关闭连接的流程非常简单,只需要向 Broker 发送一个 DISCONNECT 数据包就可以了。DISCONNECT 数据包没有可变头(Variable he...原创 2020-10-28 16:06:13 · 305 阅读 · 0 评论 -
第04课:订阅与发布(一)
接下来我们来学习 MQTT 协议中的消息订阅与发布。本节课核心内容:订阅与发布模型PUBLISH代码实践:发布消息4.1 订阅与发布模型在第一课中,我们介绍了 MQTT 基于订阅与发布的消息模型,MQTT 协议的订阅与发布是基于主题的(Topic),一个典型的 MQTT 消息发送与接收的流程如下:ClientA 连接到 Broker;ClientB 连接到 Broker,并订阅...原创 2020-10-28 16:06:14 · 253 阅读 · 0 评论 -
第05课:订阅与发布(二)
接下来我们来学习如何订阅一个主题,并接收消息。本节课核心内容:订阅取消订阅代码实践5.1 订阅订阅主题的流程如下:Client 向 Broker 发送一个 SUBSCRIBE 数据包,其中包含了 Client 想要订阅的主题以及其他一些参数;Broker 收到 SUBSCRIBE 数据包后,向 Client 发送一个 SUBACK 数据包作为应答。接下来我们看数据包的具体...原创 2020-10-28 16:06:14 · 161 阅读 · 0 评论 -
第06课:QoS0 和 QoS1
在前面的课程中我们多次提到了 QoS(Quality of Service)的概念,CONNECT、PUBLISH、SUBSCRIBE 中都有 QoS 的标识,那么 MQTT 提供的 QoS 是什么呢?本节课核心内容:MQTT 中的 QoS 等级QoS0QoS1代码实践6.1 MQTT 中的 QoS 等级作为最初用来在网络带宽窄、信号不稳定的环境下传输数据的协议,MQTT 设计了一...原创 2020-10-28 16:06:15 · 2046 阅读 · 0 评论 -
第07课:QoS2 和 OoS 的最佳实践
QoS0 和 QoS1 是相对简单的 QoS 等级,QoS2 不仅要确保 Receiver 能收到 Sender 发送的消息,还要保证消息不重复。它的重传和应答机制就要复杂一些,同时开销也是最大的。下面就让我们来看一下 QoS2 的机制。本节课核心内容:QOS2QoS 和会话(Session)如何选择 QoS7.1 QOS2在 QoS2 下,一条消息的传递流程如下: QoS 使用...原创 2020-10-28 16:06:15 · 400 阅读 · 0 评论 -
第08课:Retained 消息和 LWT
在这一课里面我们来学习一下 Retained 消息和 LWT。本节课核心内容:Retained 消息代码实践:发布和接收 Retained 消息LWT代码实践:监控 Client 连接状态8.1 Retained 消息让我们来看一下这个场景: 你有一个温度传感器,它每三个小时向一个 Topic 发布当前的温度。那么问题来了,有一个新的订阅者在它刚刚发布了当前温度之后订阅了这个...原创 2020-10-28 16:06:16 · 254 阅读 · 0 评论 -
第09课:Keep Alive 和连接保活
这一课我们来学习 MQTT 协议中的 Keep Alive 机制。本节课核心内容:Keep Alive代码实践如何在移动端保持 MQTT 连接9.1 Keep Alive在上一课中,我们提到过 Broker 需要知道 Client 是否非正常地断开了和它的连接,以发送遗愿消息。实际上 Client 也需要能够很快地检测到它失去了和 Broker 的连接,以便重新连接。MQTT 协议...原创 2020-10-28 16:06:16 · 189 阅读 · 0 评论 -
第10课:实战 IoT+AI(一)
在接下来的课程里,我们来完成一个 IoT+AI 的实战项目。本节课核心内容:如何在 MQTT 里面传输大文件消息去重消息数据编码实现 Android 发布端发布识别结果在我的另一门达人课《物体识别:TensorFlow on Android》里, 我们实现了一个可以识别出图片里的物体并标注其位置的 Android 应用。在这里我们可以把运行该 App 的 Android 设备当做一...原创 2020-10-28 16:06:17 · 680 阅读 · 0 评论 -
第11课:实战 IoT+AI(二)
在这一课里我们来实现 Web 订阅端。本节课核心内容:MQTT over WebSocket连接到 Broker处理消息11.1 MQTT over WebSocket我们要实现的是一个可以在浏览器里运行的 MQTT Client。MQTT 基于 TCP 协议,在目前主流的浏览器里面,使用 JavaScript 直接打开一个 TCP 连接是不可能的,所以在浏览器里面直接使用 MQTT...原创 2020-10-28 16:06:18 · 218 阅读 · 0 评论 -
第12课:搭建 MQTT Broker 和安全实践
到目前为止,我们使用的都是一个公有的 Broker,对于学习和演示来说,应该是足够的。但是对于实际生产来说,我们需要有一个私有、可控的 Broker。正如本课程开头所说,现在很多云服务商都提供了 MQTT Broker 服务,在这里我列举几个较大的:阿里云的物联网套件腾讯云的 IoT Hub青云的 EMQ IoT Hub百度天工云服务商的 MQTT Broker 服务是一个很好的选...原创 2020-10-28 16:06:19 · 606 阅读 · 0 评论 -
第13课:MQTT 5.0 协议新特性
在前面的课程里,我们使用的是 MQTT 3.1.1 版本,也是目前支持和使用最广泛的版本。2017 年 8 月,OASIS MQTT Technical Committee 正式发布了用于 Public Review 的 MQTT 5.0 的草案。2018 年,MQTT 5.0 已正式发布,虽然目前支持 MQTT 5.0 的 Broker 和 Client 库还比较有限,但是作为 MQTT 未来的...原创 2020-10-28 16:06:19 · 352 阅读 · 0 评论 -
附录:常见问题解答
感谢订阅课程的读者们对作者的信任和支持。为方便大家学习和交流,我们特地收集并整理了《MQTT 协议快速入门》读者交流群中大家经常提到的问题及作者的解答,作为附录补充到课程中。1. 目前 MQTT 5.0 会马上普及吗? 暂时不会,目前 Broker 以及 Client 实现的支持还都比较有限。2. MQTT 模块如何实现持续的超低功耗连接? MQTT 建立的是 TCP 长连接,所...原创 2020-10-28 16:06:20 · 154 阅读 · 0 评论