协议说明书:https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/04-OperationalBehavior.html
官网提供了很多的broker模拟器,地址:https://github.com/mqtt/mqtt.github.io/wiki/servers
Bevywise MQTTRoute
– 20181026测试发现MQTT包有问题(表示包长的字段有误)
bevywise broker模拟器说明书:https://www.bevywise.com/iot-simulator/help-document/
Mosquitto
– 挺好的一个broker
MQTT嵌入式版本:https://github.com/eclipse/paho.mqtt.embedded-c
MQTT使用例子:http://www.stmcu.org/module/forum/thread-613083-1-7.html
MQTT表示
报文长度的字段
是可变的,从一个字节到四个字节,举例如下:
/*高位在后*/ //32: 50 //80 01: 128 //81 01: 129 //80 80 01: 16384 //81 80 01: 16385
清理会话标志
设置为1的客户端不会收到旧的应用消息,而且在每次连接成功后都需要重新订阅任何相关的主题。清理会话标志设置为0的客户端会收到所有在它连接断开期间发布的QoS 1和QoS 2级别的消息。因此,要确保不丢失连接断开期间的消息,需要使用QoS 1或 QoS 2级别,同时将清理会话标志设置为0。清理会话标志0的客户端连接时,它请求服务端在连接断开后保留它的MQTT会话状态。如果打算在之后的某个时间点重连到这个服务端,客户端连接应该只使用清理会话标志0。当客户端决定之后不再使用这个会话时,应该将清理会话标志设置为1最后再连接一次,然后断开连接。
MQTT服务器允许匿名
:client连接时可以不填用户名密码,也可以随意填一个用户名密码。
subscribe中的packageID(
报文标识符
)字段发送给服务器,服务器发送subACK也会包含同样的packageID,用于这两个包的关联
MQTT borker 及 client:
emqttd
emqttd 如果emqttd start启动不了(长时间没返回),可以先emqttd stop。
emqttd:如果有两个相同client ID先后连接到服务器,emqttd会断开第一个client,让第二个client正常连接上。
emqttd的 MQTT client测试工具,连接 MQTT borker 的 port 要用8083,用1883反而不行,如下图:
MQTT client:
mqtt.fx
下载地址:
http://www.jensd.de/apps/mqttfx
http://mqttfx.jensd.de/index.php/download
转载于:https://www.cnblogs.com/god-of-death/p/9168606.html