微信小程序 mqtt 连接中断原因

上周开发微信小程序时新加了一个页面,复用了以前页面的逻辑,但是今天发现新加的页面出现了很奇怪的问题:

  • 进入新页面后,点一下查询再退出页面,mqtt连接正常;
  • 进入新页面后,直接返回退出页面,mqtt连接中断。

WebSocket connection to "wss://www.xxxx.com/mqtt" failed:Close received after close 

经过排查,发现小程序的生命周期onUnload和onHide里面都调用了取消订阅的方法  client.unsubscribe(subsTopic) ,但是不点查询的时候并没有订阅 subsTopic 。

订阅之后多次取消订阅没有问题,但是没有订阅时调用取消订阅 mqtt 连接就会中断。

onUnload() {
    console.log("卸载页面");
    this.clearTopic();
},
onHide() {
    console.log("隐藏页面");
    this.clearTopic();
},

解决办法:

去掉onUnload和onHide里的 this.clearTopic,在查询数据里面1. 订阅主题 2. 发布主题 3. 获取数据 4. 取消订阅主题。

补充:也可以在 unsubscribe 之前先检查一下  this.subsTopic  ,不为空才取消定订阅,否则不取消。

posted @ 2023-10-23 10:37  sunshine233  阅读(442)  评论(0编辑  收藏  举报