mqtt协议和http协议区别能打通吗

mqtt协议和http协议区别能打通吗

关于MQTT的学习笔记

近期在项目中使用到了MQTT作为进程间的通信方式,之前没有接触过这种协议,因此特地写下这两篇笔记来记录学习过程。

我们来了解一下MQTT的基本概念。MQTT协议全称是Message Queuing Telemetry Transport协议,即消息队列遥测传输协议。它是物联网领域中常用的应用层协议,运行在TCP/IP协议栈的应用层上。由于其依赖TCP协议,因此具有极高的可靠性。MQTT是一个基于发布/订阅主题模型的轻量级协议。

一、MQTT的通信模型

MQTT协议是基于客户端-服务器模型的。在MQTT协议中,有三个主要的身份:发布者(Publisher)、服务器(Broker)以及订阅者(Subscriber)。消息发布者可以同时是订阅者。

1. MQTT客户端的功能包括:发布消息给其他相关客户端、订阅主题以接收应用消息、取消订阅主题请求以及从服务端终止连接。

2. MQTT服务器,也被称为Broker(消息代理),它的功能包括:接受来自客户端的网络连接请求、接受客户端发布的应用消息、处理客户端的订阅和取消订阅请求。

二、MQTT消息

MQTT所发的消息包含主题和内容。客户端可以订阅任意主题,当有其它客户端发布符合所订阅主题的消息时,这些消息就会由MQTT Broker发送到相应的客户端。

在MQTT中,还有一个重要的概念——服务质量(QoS)。MQTT提供了三种服务质量供开发者根据具体情况选择:

1. QoS 0:最多发送一次消息。在消息发送出去后,接收者不会发送回应,发送者也不会重发消息。

2. QoS 1:至少发送一次消息。这意味着消息至少需要送达一次,但也有可能送达多次。这个级别的QoS需要在PUBACK报文中进行确认。

3. QoS 2:这是最高等级的服务质量,要求消息既不能有丢失也不能有重复。但这个级别的使用有一定的开销,通常用于对数据传输要求极高的场景,如支付场景。

三、mosquitto的使用

mosquitto是一款开源的MQTT消息代理软件,它提供了轻量级的发布/订阅消息推送模式,使得设备之间的短消息通信变得简单。它广泛应用于低功耗传感器、手机、嵌入式计算机、微型控制器等移动设备。

接下来我们简单介绍一下mosquitto的实践。从提供的链接中下载mosquitto的源码。然后,在mosquitto的路径下依次执行以下命令进行编译:

mkdir build

cd build

cmake ../

make

如果在执行cmake指令时遇到找不到OpenSSL的问题,可以执行以下命令安装OpenSSL(针对Ubuntu系统):

sudo apt-get install libssl-dev

编译完成后,我们可以在build目录下的client和src文件夹下看到一些可执行文件。我们主要关注mosquitto_pub(发布者客户端)、mosquitto_sub(订阅者客户端)和mosquitto(服务器软件)。

以上就是本次的分享内容。下一篇文章中,我们将结合具体实例进一步介绍MQTT的应用。如有任何错误或疑问,欢迎指正和讨论。


mqtt协议和http协议区别能打通吗