b***@sina.com
b***@sina.com
  • 发布:2025-06-08 21:34
  • 更新:2025-06-09 11:12
  • 阅读:53

【报Bug】MQTT一直处于重连状态

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: M1

HBuilderX类型: 正式

HBuilderX版本号: 4.66

第三方开发者工具版本号: 1.06.2503300

基础库版本号: 3.7.12

项目创建方式: HBuilderX

操作步骤:

直接进入页面调用

预期结果:

连接成功

实际结果:

一直正在重连

bug描述:

mqtt一直处于重连状态,同样的配置信息(小程序上ws改成wx),react可以直接连上使用

2025-06-08 21:34 负责人:无 分享
已邀请:
DCloud_UNI_yuhe

DCloud_UNI_yuhe

请提供一下可以复现的项目

  • b***@sina.com (作者)

    <script>

    const MQTT_URL = 'wx://122.51.114.33:8083/mqtt';

    const mqtt = require("mqtt")

    // const mqtt = require("@/common/mqtt.js")

    import LineEcharts from 'pages/Device/components/line-echarts/index.vue'

    import {

    _getStorage,

    _setStorage

    } from '@/common/storage'

    let client = null;


    export default {  
    name: "DeviceDetail",
    components: {
    LineEcharts
    },
    created() {
    this.mqttInit()
    },
    methods: {
    async mqttInit() {
    let userInfo = _getStorage('userInfo') || {
    userName: '浙江恩利'
    }
    if (!userInfo) {
    return false;
    }
    let {
    userName
    } = userInfo;
    let time = new Date().getTime();
    const mqttOptions = {
    clean: true, // 保留回话
    connectTimeout: 4000, // 超时时间
    reconnectPeriod: 4000, // 重连时间间隔
    //clientId,这个是EMQ Dashboard的上的clientId 对应就好
    clientId: userName + '-' + time,
    username: 'admin',
    password: 'chen007',
    reschedulePings: true,
    protocolId: "MQTT",
    protocolVersion: 3,
    }
    try {
    if (client) {
    client.close();
    }
    let client = mqtt.connect(MQTT_URL, mqttOptions);
    let equipmentCode = "STOYV01012025060400018"
    console.log(client)
    client.on('connect', () => {
    console.log('mqtt连接服务器');
    client.subscribe(`/iot/liveData/${equipmentCode}`, () => {
    console.log('成功订阅')
    });
    })
    client.on('reconnect', (error) => {
    console.log('正在重连:', error)
    })
    client.on('error', (error) => {
    console.log('连接失败:', error)
    })
    client.on('message', (topic, message) => {
    let item = JSON.parse(message.toString());
    console.log(topic)
    console.log(item)
    })
    } catch (err) {
    console.log(err)
    }
    },
    }
    }

    </script>

    2025-06-11 23:37

  • DCloud_UNI_yuhe

    回复 b***@sina.com: 请提供一下完整的可以运行的项目

    2025-06-12 11:00

要回复问题请先登录注册