MQTT
是一个客户端服务端架构的发布/订阅模式的消息传输协议
连接过程
MQTT客户端要想连接服务端,首先要向服务端发送CONNECT报文
| 名称 | 内容 | 解释 |
|---|---|---|
| clinetId | "client id name" | 用于什么识别设备的id名称,必须唯一 |
| cleanSession | true | 是否清除会话,重要信息不清除 |
| username(可选) | "name" | 用户名 |
| password(可选) | "password" | 密码 |
| lastWillTopic(可选) | "/haha" | |
| lastWillQos(可选) | 2 | |
| lastWillMessage(可选) | "unexpected exit" | |
| lastWillRetain(可选) | false | |
| keepAlive | 60 | (心跳时间间隔)用于服务端了解客户端连接情况 |
服务端收到后回复
| 名称 | 内容 | 解释 |
|---|---|---|
| sessionPresent | true | 客户端要求服务端保存报文(cleanSession=false)且服务端保存了未发送成功的报文时,为true |
| returnCode | 0 | 成功连接 |
| 1 | 连接被服务端拒绝,原因是不支持客户端的MQTT协议版本 | |
| 2 | 连接被服务端拒绝,原因是不支持客户端标识符的编码。可能造成此原因的是客户端标识符编码是UTF-8,但是服务端不允许使用此编码。 | |
| 3 | 连接被服务端拒绝,原因是服务端不可用。即,网络连接已经建立,但MQTT服务不可用。 | |
| 4 | 连接被服务端拒绝,原因是用户名或密码无效。 | |
| 5 | 连接被服务端拒绝,原因是客户端未被授权连接到此服务端。 |
相关软件
太极创客网上的一些软件分享 MQTT客户端软件:MQTTfx PubSubClient库:PubSubClient
公用MQTT服务器
| 然也物联 (国内) | Mosquitto (国外) | HiveMQ (国外) | |
|---|---|---|---|
| 网址 | http://www.ranye-iot.net | http://www.mosquitto.org | https://www.hivemq.com |
| MQTT服务器地址 | test.ranye-iot.net | test.mosquitto.org | broker.hivemq.com |
| TCP 端口 | 1883 | 1883 | 1883 |
| TCP/TLS 端口 | 8883 | 8883 | |
| WebSockets 端口 | 8080 | 8000 | |
| Websocket/TLS 端口 | 8081 |