当前位置: 首页 > 科技观察

干货!物联网开发平台协议,程序员必读!

时间:2023-03-22 00:29:21 科技观察

在当前的物联网背景下,国内涌现了很多物联网开发平台,如百度天工智能物联网平台、阿里Link物联网平台、腾讯QQ物联网智能硬件开放平台等。这些平台都应用了MQTT协议,那么什么是MQTT协议呢?MQTT,英文全称:MessageQueuingTelemetryTransportProtocol,是MessageQueuingTelemetryTransportProtocol的缩写。MQTT是一种基于轻量级代理发布/订阅模型的消息传输协议,运行在TCP协议栈之上。该协议提供有序、可靠、双向的网络连接保障,特别适用于低带宽、高网络延迟、网络通信不稳定等受限环境下的消息分发。它是物联网消息传输中的标准传输协议。在工作模式上,协议采用代理发布/订阅模式,实现了发布和订阅的解耦,因此协议中存在三个角色:代理服务器;出版商客户;订户客户端。发布者和订阅者互不干扰,也就是说发布者和订阅者不知道对方的存在,只知道代理服务器。代理服务器负责接收和存储来自发布者的消息,同时将消息发送给订阅者。它成为发送者和订阅者之间的中介。同一个客户端可以既是发布者又是订阅者。消息传递是通过“topic”实现的:“topic”是附加在消息上的标签;发布者客户端向代理服务器发送“主题”和“消息”;代理服务器将消息转发给该“主题”的每个订阅订阅者客户端。为了保证消息能够完整传递,MQTT协议提供了三个服务质量等级。级别为0,表示发布者消息不需要响应反馈,没有重传机制。此类消息可能会丢失或重复,具体取决于TCP协议提供的交互式数据包服务。级别为1,表示至少可以保证消息的一次传递,但可能会出现消息重复。如果发布者在指定时间内没有收到响应控制消息,发布者将重新发送消息。Level2表示onlyonce,属于较高级别的服务质量。消息丢失和重复是不可接受的,确保消息只发送或接收一次。另外,MQTT协议使用keep-alive机制,在客户端设置LWT信息,发送给代理服务器。当客户端异常掉线时,比如电池耗尽、系统崩溃、网络断开等,代理服务器检测到客户端下线后,会发送保存在特定主题上的LWT信息让其他人使用订阅主题的客户端知道该节点意外下线。