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

使用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;
        }
    }

相关文章:

  • 若依(RuoYi)框架新手使用指南
  • Bilve 搭建手册
  • L2TP的LAC拨号模式实验
  • 【SpringBoot】你不能不会的SpringBoot图形验证码生成
  • 自学Python创建强大AI:从入门到实现DeepSeek级别的AI
  • bootstrap介绍(前端框架)(提供超过40种可复用组件,从导航栏到轮播图,从卡片到弹窗)bootstrap框架
  • 1688商品数据实战:API搜索接口开发与供应链分析应用
  • Linux--进程创建
  • CTF类题目复现总结-[WUSTCTF2020]girlfriend 1
  • wpa_supplicant驱动初始化源码分析
  • Gin框架学习
  • 【sgFloatDialog】自定义组件:浮动弹窗,支持修改尺寸、拖拽位置、最大化、还原、最小化、复位
  • Vue3 在组件中判断事件是否注册
  • js原型链与自动装箱机制
  • 从OSI七层网络模型角度了解CAN通信协议
  • 关于金融开发领域的一些专业知识总结
  • jmeter接口测试[-面试篇-]
  • 【YOLOv8改进 - C2f融合】C2f融合SCConv :即插即用的空间和通道重建卷积
  • 我的uniapp自定义模板
  • 基于SpringBoot + Vue 的药店药品信息管理系统
  • 四大皆空!赛季还没结束,曼城已经吃上“散伙饭”了
  • 新疆多地市民拍到不明飞行物:几秒内加速消失,气象部门回应
  • 被围观的“英之园”,谁建了潮汕天价违建?
  • 南宁一学校发生伤害案件,警方通报:嫌疑人死亡,2人受伤
  • 关税互降后的外贸企业:之前暂停的订单加紧发货,后续订单考验沟通谈判能力
  • 昔日千亿房企祥生集团约2.03亿元债权被拍卖,起拍价8000万元