JS客户端断线重连后收到的消息乱序问题

环境

  • EMQX 版本:经过反复测试,4.3.7不管是cdn还是npm一直复现该bug,引入cdn的4.1.0则不会有此现象
  • 操作系统版本:window10 64位

重现此问题的步骤

  1. 当客户端A掉线
  2. 客户端B给A发送消息如aa,bb,cc,dd
  3. 客户端重连后收到消息dd,cc,bb,aa
  4. 但是根据正常情况下,客户端重连收到的消息应该是aa,bb,cc,dd

即刚好是相反的,我认为是js逻辑的问题,不符合官方文档所说的消息队列重连时候的先入先出原则,造成了最后发的消息第一个被接收到

问题日志:很明显,日志中的操作记录就已经造成了问题,如红色框内的,最后发出去的消息第一个被接收回来,所以我认为不是用户代码逻辑的关系。

正常日志:日志记录应该是这样:

希望得到重视!其他语言的版本暂未尝试过。

看起来是客户端库的问题。

客户端库优先响应了后到达的消息,并且它没有按到消息的实际到达顺序投递给上层应用,导致你收到的消息顺序不对。

但该问题发生在mqtt官方所提供的最新js库中,以至于我现在不得不放弃最新版本而使用旧版本的库,在未来它是否会被修复呢?

这个需要问下这个库的开发者了,我们目前并没有参与这个库的维护。