MQTT通信协议和工具包简介

电子说

1.3w人已加入

描述

一、MQTT通信协议和工具包简介    

1、MQTT通信等定义:

消息队列遥测传输 ( 英语:Message Queuing Telemetry Transport , MQTT )是 ISO 标准 (ISO/IEC PRF 20922) 下基于 发布(Publish)/订阅(Subscribe) 范式的消息协议,可 视为“资 料 传递 的 桥梁” 。----摘录维基百科

2、MQTT通讯示意图

客户端

上图是MQTT的实际使用案例

将上图简化后的系统结构图如下图:

客户端

3、MQTT系统组成

系统包含两个部分:

客户端(Client):需要发布或订阅消息的终端,可以是智能终端,传感器,或者是数据库,主要功能如下:

(1)发布其他客户端需要订阅的信息;

(2)订阅其它客户端发布的消息;

(3)退订或删除应用程序的消息;

(4)断开与服务器连接。

服务器:(Server/Broker):专门用于进行设备注册和消息转发,称为"消息代理"(Broker),具体有如下功能:

(1)接受来自客户的网络连接;

(2)接受客户发布的应用信息;

(3)处理来自客户端的订阅和退订请求;

(4)向订阅的客户转发应用程序消息。

4、MQTT通信方式:

Client之间的通讯可以是一对一,一对N,也可以是N对一。

二、MQTT通信范例    

1、MQTT通讯底层方式

范例提供了2种通讯方式,TCP/IP和websocket,底层都是TCP/IP,不过websocket是对TCP/IP的封装。

2、MQTT所需工具包

具体安装包如下图,在VIPM里面安装相应的工具包和附加工具包,共享的代码也包含离线安装包。

客户端

上面工具包里包含了Client和Broker,通过依赖注入的形式,改变通信类型,提供的范例是TCP/IP和websocket两套通信模式。

客户端

其中还可以使用通用的mqtt 调试软件mosquito调试TCP/IP,但是这个不能调试websocket客户端。打开命令为 mosquito -d -v.这个调试工具在代码的共享,也可到网上下载。

客户端

三、MQTT通信范例    

1、软件扩展

为了监听底层通信报文,在项目中创建了两个类TCP Pro和WebSocket Pro分别继承Connect Tcp和WebSocketsConnect,分别添加一个Name属性并重写Read incoming Bytes和Write Incoming Biytes,使用了我上一章介绍的工具,Consol FGV对实时报文进行监控。

客户端

重写读者类,监听报文

客户端

客户端

重写后通信接口UML关系图:

客户端

2、为客户端添加自动断开后自动停止事件,这里将库里的私有方法设置成公共方法,然后使用Close Seccion事件来自动停止,如果不想改变工具包,可以删除相应的代码不影响整体功能。

将私有文件夹设置乘公共文件夹

客户端

3、TCP MQTT范例演示

注意先启动服务器再启动客户端

启动Broker

客户端

启动Clent1

客户端

启动Clent2

客户端

服务端可以看到已经启动了两个客户端。

客户端

发布V1消息,订阅消息V2

客户端

发布V2消息,订阅消息V1

客户端

同时订阅V1,V2两个消息

客户端

可以自行尝试下取消订阅相关消息

4、websocket MQTT范例演示

注意先启动服务器再启动客户端

启动client1

客户端

启动client2

客户端

websocket Broker

客户端

​可以尝试订阅和取消订阅相关消息

5、练习:

是否可以使用这个工具包,开发一个建议的局域网聊天软件,这样可以更好的学习这个工具包的用法:)。

四、MQTT通讯原理简介    

1、MQTT启动和连接

客户端

1.1、首先启动服务器,服务器启动后会启动一个异步线程监听是否有客户端连接到服务器端口

1.2、启动客户端,链接到服务器后向服务发送链接信息,服务端检测服务信息正确后返回连接信息,如果不正确就会断开连接。

1.3、客户端长期没有给服务发数据时需要向服务器发送心跳消息,如果不发送超时,服务器会断开客户端。

LabVIEW的范例中的服务器没有这个功能,mosquito服务器有这个功能,需要了解的读者可以自行尝试

2、MQTT通信方式

客户端

1.1、客户端需要某个主题A消息时向服务器订阅主题A,当客户端0向服务器发送主题A时,订阅了主题A的客户端都会收到客户端0的主题,没有订阅的客户端不会收到主题A。

1.2、当某个客户端不需要主题A时可取消订阅主题A。

五、需要安装的软件、工具包和库    

1、LabVIEW2015中文版

2、mqtt工具包集合

3、mosquitto服务器安装包

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分