客户端连接EMQX,自身重新连接成功后,能订阅话题,会出现TCP断开连接

环境信息

  • EMQX 版本:5.0.0
  • 操作系统及版本:CentOS 7.8 64位
  • 其他:W5100S,paho.mqtt.embedded-c

问题描述

paho.mqtt.embedded-c客户端连接EMQX
第一次连接,连接上能正常通讯
断电重启设备,相当于重新连接,设置了cleansession = TRUE; 心跳保活时间为60s
重新连接后,能正常收到CONNACK,订阅话题,能正常收到SUBACK,服务器还会发送一次retain的信息过来客户端

但是这时候,会出现客户端与EMQX服务器的TCP断开,或者是什么情况,客户端发送PINGREQ,服务器不会进行返回PINGRESP

需要等待19s后,重新连接(第三次重新连接),之后能够正常通讯,也不会出现TCP断开情况

配置文件及日志

第二次连接在10:00:01


你10:00:01断开的原因是日志里面是tcp_closed,表明它是你的客户端主动断开连接。
可以查一下trace一下客户端

我在芯片的TCP连接中,增加心跳包之后,貌似解决了该问题,但是芯片官方说芯片通常不会去主动断开TCP连接

如果对这个还有疑惑,可以在2侧直接用tcp dump抓包。看看到底是谁主动 :rofl:
应该是客户端

好的,谢谢,但是目前没有抓包的设备,EMQX有相关的抓包功能吗?