开源的5.2版本,通过 mqttx 连上后,为什么出现偶尔出现重连情况。

开源的5.2版本,通过 mqttx 连上后,为什么出现偶尔出现重连情况。

我通过 webhook,得到了连接和断开连接时间,知道的。

通过 mqttx 连上后,没有任何订阅,和发送过任何数据。

使用 mqtt.js 会频繁出现,重新连接。

  let options = {
    username: "xxxxxx",
    password: getToken(),
    protocolVersion: 5,
    keepalive: 30,
    clientId: 'web-' + Math.random().toString(16).substr(2)
  }

需要打开 debug 日志级别,看看这个客户端的相关日志:

日志文件看 logs/emqx.log.*

这是 mqtt.js 断开连接,第一条日志:

msg: websocket_closed, mfa: emqx_ws_connection:websocket_close/2, line: 485, peername: 192.168.5.1:65073, clientid: web-8d92a6a9afc8c, reason: keepalive_timeout, tag: SOCKET

keepalive_timeout 心跳超时吗?

我把容器中的时间校准一下,再试试,不是是不是这个原因。

这个不是心跳超时,是 websocket 断开了。日志上看是客户端主动断开的。

能再帮忙看一下吗?

ws.js:109 WebSocket connection to 'ws://192.168.5.128:8083/mqtt' failed: Close received after close
已断开Mqtt连接

在输出 已断开Mqtt连接 之前浏览器输出了上面那个错误。

从客户端的日志上看不出什么来,你用 tcpdump 抓一个包来分析吧。