当前位置: 首页 > article >正文

使用uniapp的vite版本进行微信小程序开发,在项目中使用mqtt连接、订阅、发布信息

1、保证在微信公众平台配置socket合法域名

2、项目中使用mqtt

建议在package.json中配置"mqtt": “4.1.0”,使用这个版本的依赖
页面中引入mqtt并配置连接

// @ts-ignore
 import * as mqtt from 'mqtt/dist/mqtt.js'; //要使用这里面的
 const state = reactive({
        client: null as any,
        timeCount: 0,
        mqttConnected: false,
    });

// 连接mqtt
    const connectMqtt = () => {
        if(state.mqttConnected) return;
        const options = {
            connectTimeout: 4000,
            clientId: 'xxx',
            username: 'xxx',
            password: 'xxxx',
            port: 8084,
        };
        // 微信小程序中要使用wxs,不能使用wss://
        state.client = mqtt.connect('wxs://xxxxxx/mqtt', options);
        state.client.on('connect', () => {
            console.log('mqtt connect success');
            state.mqttConnected = true; 
        });
        subscribe();
        state.client.on('error', (err:any) => {
            console.log('mqtt connect error', err);
        });
        state.client.on('message', (topic: any, message:any) => {
            console.log('mqtt receive message', topic, message);
				publish ();
        });
    }

    // 取消订阅主题
    const unsubscribe = () => {
        state.client.unsubscribe('/xxx/xxx', (err:any) => {
            if (err) {
                console.error(err);
                // un.toast('订阅失败')
            } else {
                console.log('unsubscribe to topic');
            }
        });
    }
    
    // 订阅主题
    const subscribe = () => {
        state.client.subscribe('/xxx/xxxx', (err:any) => {
            if (err) {
                console.error(err);
                // un.toast('订阅失败')
            } else {
                console.log('Subscribed to topic');
            }
        });
    }

    // 发布信息
    const publish = () => {
        if(state.client) {
            state.client.publish('/xx/xxx', 'Hello, MQTT!', {qos: 2}, (err:any) => {
                if(!err) {
                    console.log("发布信息成功")
                }
            })
            return
        }
    }

    // 断开mqtt连接
    const disconnectMqtt = () => {
        console.log(state.mqttConnected)
        if(state.mqttConnected && state.client) {
            unsubscribe();
            state.client.end(true);
            state.mqttConnected = false;
            state.client = null;
        }
    }

http://www.kler.cn/a/594006.html

相关文章:

  • C#入门学习记录(三)C#中的隐式和显示转换
  • html5-Canvas弹跳小球项目开发总结
  • Next.js 如何成功解决了React的致命缺陷?
  • ngx_http_conf_ctx_t
  • 【SpringCloud】微服务的治理以及服务间的远程调用
  • 网络工程学习笔记
  • idea问题(三)pom文件显示删除线
  • 深度学习之语义分割
  • 【算法day16】电话号码的字母组合
  • 【设计模式】策略模式
  • java使用Modbus协议与设备进行通信
  • 【sgFloatDialog】自定义组件:浮动弹窗,支持修改尺寸、拖拽位置、最大化、还原、最小化、复位
  • AdaWaveNet:用于时间序列分析的自适应小波网络
  • 高并发编程有哪些规范?
  • 群晖中的docker设置总是不生效,尤其代理
  • 天梯赛 L2-011 玩转二叉树
  • 【MyDB】7-客户端服务端通信之3-Client的实现
  • AI日报 - 2025年3月21日
  • 使用FastAPI为知识库问答系统前端提供后端功能接口
  • 期货和期权的区别,通俗易懂!