MQTT 在 访问时一段时间会出现“ read 0:1, break ”会断开连接一次,重连可正常发送一段
试过onenet的样例,也试过和通讯猫的通讯,都一段时间后会出现这个提示,后断开重连。
Mosquitto Broker收到Puslish Message报文后,其Message Identifier为0时,Broker会断开TCP连接。
Mosquitto Broker日志:
1709176157: Sending SUBACK to abcd1234
1709176158: Client abcd1234 disconnected due to protocol error.
没有找到设置MQTTMessage结构体中id的语句,在paho_mqtt_publish函数中添加id自增动语句测试后,能正常发布消息,且不会再断开TCP。
在 https://mqtt.p2hp.com/mqtt311 2.3.1 包唯一标识中找到关闭唯一标识的描述:
SUBSCRIBE,UNSUBSCRIBE,PUBLISH(QoS > 0 的时候)控制包必须包含非零的唯一标识[MQTT-2.3.1-1]。每次客户端发送上述控制包的时候,必须分配一个未使用过的唯一标识[MQTT-2.3.1-2]。如果一个客户端重新发送一个特别的控制包,必须使用相同的唯一标识符。唯一标识会在客户端收到相应的确认包之后变为可用。例如PUBLIST在QoS1的时候对应PUBACK;在QoS2时对应PUBCOMP。对于SUBSCRIBE和UNSUBSCRIBE对应SUBACK和UNSUBACK[MQTT-2.3.1-3]。服务端发送QoS>0的PUBLISH时,上述内容同样适用。
我发现我的是两种情况,1使用了整形发送,2网络问题
楼主,你这个问题解决了吗?
楼主,您好,您这个问题解决了吗
楼主,解决了吗