这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战
客户端(Client)
使用MQTT协议的程序或设备。需要通过网络连接到服务端。例如物联网中我们的传感器。
功能
- 打开/关闭与服务端的网络连接。
- 发布应用消息给其他客户端。
- 订阅和接收相关应用消息。
- 取消订阅和移除接收其他相关应用消息。
常用的MQTT客户端工具
MQTT X:开源跨平台的桌面客户端工具,功能较为全面,允许多个客户端连接并且自由切换和通信,有良好的交互性。Mosquitto CLI:命令行工具,有多个配置选项,支持TLS证书连接、代理服务器连接,支持debug模式。MQTT.fx:主流客户端,开源快速验证,文档较多,交互略差。
服务端(Server)
一个程序或设备,作为发送消息客户端和请求订阅的客户端之间的中介。也称为消息代理(Broker)
功能
- 打开/关闭与客户端的网络连接。
- 接收客户端发布的应用消息。
- 处理客户端的订阅和取消订阅请求。
- 转发应用消息给已订阅的客户端。
主流开源的MQTT服务器
Eclipse Mosquitto:使用C语言实现的MQTT服务器。Eclipse组织还还包含了大量的MQTT客户端项目。EMQ X:使用Erlang语言开发的MQTT服务器,内置强大的规则引擎,支持趣多其他的IoT协议。Mosca:使用Node.JS开发的MQTT服务器,简单易用。VerneMQ:使用Erlang语言开发的MQTT服务器。
会话(Session)
每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间的有状态交互。会话可以存在与一个网络连接之间,也可以跨越多个连续的网络连接。
主题名(Topic Name)
附加在应用消息上的一个标签信息,被用于匹配服务器已经存在的订阅。服务端会向所有匹配订阅的客户端发送此应用消息。
主题过滤器(Topic Filter)
只在订阅时使用的表达式,包含通配符,以匹配多个主题名
订阅(Subscription)
订阅包含一个主题过滤器(Topic Filter)和一个最大的服务质量等级(QoS)。订阅与单个会话关联。会话包含至少一个订阅。会话的每个订阅都有一个不同的主题过滤器。
载荷(Payload)
就是业务消息,可以是任意格式(二进制、十六进制、普通字符串、JSON字符串、Base64)的数据
应用行业
- 物联网
M2M通信,物联网大数据采集。 - 智慧城市、远程医疗、远程教育。
- 电力、石油与能源等行业。
- 智能硬件、智能家居、智能电器。
- 车联网通信、电动车站桩采集。
- 移动即时消息及安卓、
Web消息推送。