当今最受欢迎的物联网协议——MQTT


本文目录

  • 当今最受欢迎的物联网协议——MQTT
  • 什么是MQTT
  • MQTT基本原理
  • 连接MQTT服务端
  • MQTTfx使用教程


什么是MQTT

首先让我们了解一下什么是MQTT。



基于mqtt协议的物联网app mqtt物联网架构_网络


MQTT是一个客户端 服务端架构的发布/订阅模式的消息传输协议。

与HTTP之类的协议相比,MQTT在通过网络传输数据时表现出众,且该协议易于在客户端实现。因此,MQTT成为了当今世界上最受欢迎的物联网协议。它已广泛应用于车联网、智能家居、即时聊天应用和工业互联网等领域。目前通过MQTT协议连接的设备已经过亿,这些都得益于MQTT 协议为设备提供了稳定、可靠、易用的通信基础。

MQTT基本原理

基于mqtt协议的物联网app mqtt物联网架构_物联网_02

图中汽车,手机和电脑是三个MQTT客户端。MQTT服务端在管理MQTT通讯时使用了“主题”来对信息进行管理的。假设我们需要利用手机和电脑获取汽车的速度,那么我们首先要利用电脑和手机向MQTT服务器订阅主题“汽车速度”。接下来,当汽车客户端向服务端的“汽车速度”主题发布信息后,服务端就会首先检查以下都有哪些客户端订阅了“汽车速度”这一主题的信息,并将收到的“汽车速度”信息转发给订阅了该主题的手机和电脑客户端。

连接MQTT服务端

MQTT客户端连接服务端一共有两步。
1.首先MQTT客户端将会向服务端发送连接请求。该请求实际上是一个包含有连接请求信息的数据包。这个数据包的官方名称为CONNECT。
2.MQTT服务端收到客户端连接请求后,会向客户端发送连接确认。同样的,该确认也是一个数据包。这个数据包官方名称为CONNACK。

CONNECT报文所包含的信息内容。

基于mqtt协议的物联网app mqtt物联网架构_网络_03

clientId 客户端ID ,ClientId必须是独立的。

cleanSession 清除会话
当cleanSession 被设置为“true”。服务端不需要客户端确认收到报文,也不会保存任何报文。在这种情况下,即使客户端错过了服务端发来的报文,也没办法让服务端再次发送报文。
当cleanSession 设置为”false”。后续通讯中,客户端会要求服务端保存没有收到的报文。

keepAlive 心跳时间间隔
要求客户端定时给服务端发送信息,确认客户端与服务端的连接情况。

CONNACK报文所包含的信息内容。

基于mqtt协议的物联网app mqtt物联网架构_客户端_04

returnCode 连接返回码
当服务端收到了客户端的连接请求后,会向客户端发送returnCode(连接返回码),用以说明连接情况。如果客户端与服务端成功连接,则返回数字“0”。如果未能成功连接,连接返回码将会是一个非零的数值。

具体这个数值的含义可以看下面的表:

基于mqtt协议的物联网app mqtt物联网架构_基于mqtt协议的物联网app_05

MQTTfx使用教程

MQTTfx的官网地址是:MQTTfx,这里不建议去官网下载,因为官网是最新版已经开始收费了。

还有一个下载办法是通过太极创客网站的下载页面获取此软件太极创客MQTTfx下载地址 下载之后进入主页面,设置添加文件

基于mqtt协议的物联网app mqtt物联网架构_学习_06


Subscribe是订阅,Publish是发布

基于mqtt协议的物联网app mqtt物联网架构_学习_07