首页 > 其他分享 >vue 连接mqtt

vue 连接mqtt

时间:2024-06-07 18:44:10浏览次数:18  
标签:function vue MQTT value topic mqtt client listeners 连接

  1. 下载mqtt服务:npm install mqtt
  2. const mqttConfig = {  
      // 你的 MQTT 服务器配置  
      protocolId: 'MQTT',
      protocolVersion: 4,
      clean: true,
      clientId: 'xxxx',
      reconnectPeriod: 1000,
      connectTimeout: 60 * 1000,
      // will: {
      //   topic: 'WillTopic',
      //   payload: 'Connection Closed Unexpectedly!',
      //   qos: 0,
      //   retain: false
      // },
      username: 'xxxx', // 如果需要
      password: 'xxxxx', // 如果需要
      // 其他配置...  
    };  
    export function useMqtt() {
      const client = ref(null);
      const listeners = ref({});
      // 连接到 MQTT 服务器  
     function connect() {
      console.log('2**********');
        if (client.value) return;  
        client.value = mqtt.connect('地址',mqttConfig);  
        client.value.on('connect', () => {  
          console.log('Connected to MQTT');
          return true
          // 这里可以添加默认的订阅
          // client.value.subscribe('xxxx')
        });  
        client.value.on('message', (topic, message) => {
          if (listeners.value[topic]) {
            listeners.value[topic].forEach(callback => callback(message.toString()))
          }  
        });
        // 处理错误和断开连接的情况  
        client.value.on('error', (error) => {  
          console.error('MQTT error:', error);  
        });  
        client.value.on('close', () => {  
          console.log('MQTT connection closed');  
          client.value = null; // 断开连接后重置 client  
        });  
      }  
      // 断开 MQTT 连接  
      function disconnect() {  
        if (client.value) {  
          client.value.end();  
          client.value = null;  
        }  
      }  
      // 订阅 MQTT 主题  
      function subscribe(topic, callback) {  
        console.log(topic)
        if (client.value && client.value.connected) {  
          client.value.subscribe(topic);  
      
          if (!listeners.value[topic]) {  
            listeners.value[topic] = [];  
          }  
          listeners.value[topic].push(callback);  
        }
      }
      // 取消订阅 MQTT 主题  
      function unsubscribe(topic, callback) {  
        if (client.value && client.value.connected && listeners.value[topic]) {  
          const index = listeners.value[topic].indexOf(callback);  
          if (index > -1) {  
            listeners.value[topic].splice(index, 1);  
      
            // 如果没有监听者了,可以取消订阅  
            if (listeners.value[topic].length === 0) {  
              client.value.unsubscribe(topic);  
            }  
          }  
        }  
      }  
      // 发布 MQTT 消息  
      function publish(topic, message) {  
        if (client.value && client.value.connected) {  
          client.value.publish(topic, message);  
        }  
      }
    

      

标签:function,vue,MQTT,value,topic,mqtt,client,listeners,连接
From: https://www.cnblogs.com/yeyuqian/p/18237716

相关文章

  • Vue Router 4与路由管理实战
    title:VueRouter4与路由管理实战date:2024/6/7updated:2024/6/7excerpt:这篇文章介绍了如何在Vue.js应用中利用VueRouter实现单页面应用的路由管理,包括配置路由、导航守卫的使用、路由懒加载以优化性能以及动态路由的实现方法,旨在提升用户体验和应用加载效率categorie......
  • MQTTX使用
    windows10-EMQX安装及配置使用教程一、下载安装1.1下载1.2安装1.3设置开机自启动二、连接MQTT2.1MQTT下载安装2.1.1下载2.1.2安装及配置三、EMQX常用命令  本文介绍的是在windows10系统下的emqx的安装、配置及使用教程。一、下载安装1.1下载下载链接:emqx官网-版本......
  • 使用jasypt 和 k8s 避免项目中写数据库连接密码
    0引入jasypt<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.4</version></de......
  • java mqtt自动重连注意点
    1、在使用Java的 org.eclipse.paho.client.mqttv3 MQTT客户端库时,options.setAutomaticReconnect(false) 的设置是用来指定在连接丢失后,客户端是否应该自动尝试重新连接。将其设置为 false 意味着如果连接丢失,客户端不会自动尝试重新连接。然而,即使设置了自动重连为 fa......
  • 原生html+js实现两两元素配对,用线条连接两个元素
    效果如下:画线部分借鉴了“https://blogweb.cn/article/1403842582411”此链接文章作者的代码,感谢!直接放出代码:点击查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>配对</title><scripttype=&qu......
  • mysql8 无法连接navicat问题
    1、修改MySQL的配置文件(my.cnf或者my.ini),在[mysqld]部分添加或者修改default_authentication_plugin=mysql_native_password。重启mysql服务2、创建或修改用户并设置密码:如果您还没有 root 用户从任何主机连接的权限,您需要首先以具有足够权限的用户(通常是本地 root 用户)登录......
  • 基于SpringBoot+Vue的网上花店系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • Vue父子组件生命周期执行顺序
    顺序执行顺序:父组件先创建,然后子组件创建;子组件先挂载,然后父组件挂载,即“父beforeCreate->父create->子beforeCreate->子created->子mounted->父mounted”。在单一组件中,钩子的执行顺序是beforeCreate->created->mounted->…->destroyed,但当父子组件嵌套时,父组件和......
  • 基于SpringBoot+Vue的校园驿站管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 基于SpringBoot+Vue的二手手机交易平台的详细设计和实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......