vue使用MQTT.js遗嘱失效问题

问题出现的环境背景及自己尝试过哪些方法

image.png
就是这个离线了没有发送遗嘱,还有就是刷新页面就发送了遗嘱有很大bug,百度google,github仓库也看了,不知道什么问题,

这是我们老大给我发的消息
Keep Alive指定连接最大空闲时间T,当客户端检测到连接空闲时间超过T时,必须向Broker发送心跳报文PINGREQ,Broker收到心跳请求后返回心跳响应PINGRESP。若Broker超过1.5T时间没收到心跳请求则断开连接,并且投递遗嘱消息到订阅方;同样,若客户端超过一定时间仍没收到心跳响应PINGRESP则断开连接。

坑请前辈给予指教十分感谢### 问题描述

相关代码

粘贴代码文本(请勿用截图)

function mqttRequest({
      url,
      port,
      mac,
      userName = "",
      passWord = ""
    }) {
      let agreement;
      //1.协议
      // #ifdef H5
      agreement = "ws://"
      // #endif
      // #ifdef MP-WEIXIN||APP-PLUS
      agreement = "wx://"
      // #endif
      // 2.端口
      url = `${agreement}${url}`;
      console.log(url)
      // 4.根据协议规则必须传递userName: 'admin',password: 'password',
      let client = mqtt.connect(url, {
        port: port,
        username: userName,
        clean: true, // 保留回话
        // connectTimeout: 4000, // 超时时间
        password: passWord,
        mac: mac,
        keepalive: 10,
        keepAliveInterval: 4, //心跳包
        timeout: 6, //超时时间
        reconnect: true, //自动重连
        will: {
          topic: 'error',
          payload: 'Connection Closed abnormally..!',
          retain: false,
          qos: 0,
        },
      })
      return client
    }

你期待的结果是什么?实际看到的错误信息又是什么?

我希望能够关闭这个页面或者掉线了,发送遗嘱,我的环境是uniapp,
另外是不是心跳有问题,这个心跳单位是什么?

阅读 2.4k
1 个回答

可能跟你在什么事件的回调发送遗嘱有关。
window.onunload 事件只能在刷新的时候发送 AJAX 请求。
window.onbeforeunload 事件可以在关闭前发送请求,但是回调不会被执行,并且要采用同步方式,也可以采用其他方法来暂时阻塞执行线程。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题