mqtt概览

mqtt

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域。

MQTT 与 HTTP 一样,MQTT 运行在传输控制协议/互联网协议 (TCP/IP) 堆栈之上,属于应用层协议。

  • 开放消息协议,简单易实现
  • 发布订阅模式,一对多消息发布
  • 基于TCP/IP网络连接,提供有序,无损,双向连接。
  • 1字节固定报头,2字节心跳报文,最小化传输开销和协议交换,有效减少网络流量。
  • 消息QoS支持,可靠传输保证

相关网址

  • mqtt中文网
  • mqtt协议中文文档
  • mosquitto mqtt服务器
  • mqtt资料
  • 知乎1

对于开发者来说,只需要专注于mqtt的客户端开发即可,服务器开发轻量级测试使用有mosquitto即可。对于mqtt服务器则有专业的团队进行开发,或者企业进行服务器购买即可。大多数时候作为一个开发者并不需要研究协议细节,除非你想编写一个相关的协议库。
对于mqtt相关的库有Paho MQTT C && Paho MQTT C++ 及 QMqtt。

  • Paho MQTT C文档
  • Paho MQTT C++文档
  • QMqtt文档

安装的话可以使用vcpkg或者自己从github拉取源码编译安装,需要注意Paho MQTT C++依赖于Paho MQTT C。如果你要编译Paho MQTT C++,则需要先编译Paho MQTT C。

MQTT使用的发布/订阅消息模式,它提供了一对多的消息分发机制,从而实现与应用程序的解耦。这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由MQTT server(或称为 MQTT Broker)分发的。

客户端进行消息推送到代理服务器,然后代理服务器将消息分发给订阅该主题消息的客户端。

举个例子:空调设备订阅温度相关的主题,此时温度计温度发生了变化,温度计将温度的消息推送到服务器中,然后服务器将该消息分发给空调设备。空调设备检测到温度变化后,进行降温或者升温或关机等操作。

client --> puh payload  --> server --> sub topic client1  
                                   --> sub topic client2 

mosquitto
安装mosquitto软件之后,里面携带有mosquitto_sub.exe订阅客户端及mosquitto_pub.exe推送客户端。

启动mosquitt代理服务器之后,mosquitto_sub.exe可以订阅一个主题,mosquitto_pub.exe 可以推送一条消息到代理服务器。可以用来做为简单的MQTT测试。

mosquitto       // mqtt代理服务器
mosquitto_sub -t [topic name]   // 订阅一个主题
mosquitto_pub -t [topic name] -m [payload]      // 推送一个消息

QMqtt,属于Qt官方提供了模块,但编译需要去github去拉取下来,不过需要注意Qt版本,Qt6就拉Qt6的版本,Qt5就拉Qt5的版本。

QMqtt拉取指令

git clone https://github.com/qt/qtmqtt      // 拉取最新版本
git clone -b v5.15.2 --depth=1 https://github.com/qt/qtmqtt     // 拉取tag v5.15.2的版本,这个用于Qt5.15.2版本的Qt

基本上Qt的一些库模块,都需要用到perl。如果编译不过的话,基本上就是电脑上缺少perl这个软件,windows可以在这个网站下载 https://strawberryperl.com/

在windows的话,编译出来后需要使用vs的命令行执行 nmake install来安装qmqtt到qt的环境中去。

你可能感兴趣的:(常用汇总,mqtt)