背景
MQTT 协议是物联网中常见的协议之一,"轻量级物联网消息推送协议"
概念
MQTT
是机器对机器(M2M
)/物联网(IoT
)连接协议。它被设计为一个极其轻量级的发布/订阅
消息传输协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用,是专为受限设备和低带宽、高延迟或不可靠的网络而设计。这些原则也使该协议成为新兴的“机器到机器”(M2M
)或物联网(IoT
)世界的连接设备,以及带宽和电池功率非常高的移动应用的理想选择。例如,它已被用于通过卫星链路与代理通信的传感器、与医疗服务提供者的拨号连接,以及一系列家庭自动化和小型设备场景。它也是移动应用的理想选择,因为它体积小,功耗低,数据包最小,并且可以有效地将信息分配给一个或多个接收器。
角色
MQTT有三个角色,包括服务器代理、订阅者和发布者。
- 1)启动服务器代理。
- 2)订阅者向服务器代理订阅相关主题。
- 3)发布者向服务器代理发布主题信息。
- 4)服务器代理想所有订阅该主题的订阅者推送消息。
MQTT有C/C++语言和JAVA包实现。需要明确的是,MQTT更适用于设备终端和手机APP socket通信,而不能支持浏览器使用。如果要支持微信浏览器应用,还需要增加类似WebsocketServlet技术给浏览器提供支持,这时MQTT以JS接口进行封装,并被调用完成消息推送。
特点
- 开放消息协议,简单易实现
- 发布订阅模式,一对多消息发布
- 基于TCP/IP网络连接,提供有序,无损,双向连接。
- 1字节固定报头,2字节心跳报文,最小化传输开销和协议交换,有效减少网络流量。
- 消息QoS支持,可靠传输保证
应用
MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域。
- 物联网M2M通信,物联网大数据采集
- Android消息推送,WEB消息推送
- 移动即时消息,例如Facebook Messenger
- 智能硬件、智能家具、智能电器
- 车联网通信,电动车站桩采集
- 智慧城市、远程医疗、远程教育
- 电力、石油与能源等行业市场
最新消息
MQTT v5.0现在成为了OASIS官方标准
OASIS现在已经发布了官方的MQTT v5.0标准 - 这对于已经为物联网(IoT)所用的消息传输协议来说,这是一个改进和功能的巨大飞跃。基于早期的v3.1.1标准,它具有重要的更新,同时最大限度地减少与现有版本的不兼容性。
新版本的亮点包括:
- 更好的错误报告 - 特别是,在发布的响应中添加了原因代码(PUBACK / PUBREC)。MQTT起源于输油管道沿线的传感器等使用案例 - 如果它们的消息发布未能传输,则传感器将不采取任何措施。然而,MQTT的用例现在要广泛得多,如果数据没有成功传输,手机上的应用程序可能会想要警告用户。返回代码现在出现在所有确认中(以及包含人类可读错误诊断的可选原因字符串)。
- 共享订阅 - 如果订阅上的消息速率很高,则可以使用共享订阅在多个接收客户端之间对消息进行负载平衡。
- 消息属性 - 消息标题中的元数据。这些用于实现此列表中的其他功能,但也允许用户定义的属性,例如通过告知接收方使用哪个密钥来解密消息内容来协助消息加密
- 消息过期 - 如果消息无法在用户定义的时间段内传递,则可以选择丢弃消息。
- 会话到期 - 如果客户端未在用户定义的时间段内连接,则可以丢弃状态(例如,订阅和缓冲的消息)而无需进行清理。
- 主题别名 - 允许将消息中的主题字符串替换为单个数字,从而减少发布者重复使用相同主题时需要传输的字节数。
- Will Delay - 如果客户端断开连接的时间超过用户定义的时间段, 则允许发布消息。允许有关重要客户端应用程序中断的通知, 而不会被误报淹没。
- 允许的功能发现 - 在连接开始时,可以传输最大数据包大小和(QoS> 0)消息的数量限制,以通知客户端允许执行的操作。 新功能的完整列表见标准的附录C。
原文地址:https://www.cnblogs.com/schips/p/12254698.html
时间: 2024-10-09 16:10:37