当前位置:首页 > VUE

vue实现mqtt收发

2026-03-29 19:07:58VUE

Vue 中实现 MQTT 收发

安装 MQTT 客户端库

使用 mqtt 库或 paho-mqtt 实现连接。推荐 mqtt,兼容性更好:

npm install mqtt --save

创建 MQTT 连接

在 Vue 组件中初始化 MQTT 客户端并连接服务器:

vue实现mqtt收发

import mqtt from 'mqtt';

export default {
  data() {
    return {
      mqttClient: null,
      receivedMessages: []
    };
  },
  mounted() {
    this.connectMqtt();
  },
  methods: {
    connectMqtt() {
      const options = {
        clean: true,
        connectTimeout: 4000,
        clientId: 'vue-client-' + Math.random().toString(16).substr(2, 8)
      };
      this.mqttClient = mqtt.connect('ws://your-mqtt-broker:8083/mqtt', options);

      this.mqttClient.on('connect', () => {
        console.log('MQTT Connected');
        this.subscribeToTopic('your/topic');
      });

      this.mqttClient.on('message', (topic, message) => {
        this.receivedMessages.push({ topic, message: message.toString() });
      });

      this.mqttClient.on('error', (error) => {
        console.error('MQTT Error:', error);
      });
    },
    subscribeToTopic(topic) {
      if (this.mqttClient) {
        this.mqttClient.subscribe(topic, { qos: 0 }, (err) => {
          if (!err) console.log(`Subscribed to ${topic}`);
        });
      }
    }
  }
};

发送 MQTT 消息

通过客户端实例的 publish 方法发送消息:

vue实现mqtt收发

methods: {
  sendMessage(topic, message) {
    if (this.mqttClient) {
      this.mqttClient.publish(topic, message, { qos: 0 }, (err) => {
        if (!err) console.log(`Message sent to ${topic}`);
      });
    }
  }
}

断开连接

组件销毁时主动断开连接:

beforeDestroy() {
  if (this.mqttClient) {
    this.mqttClient.end();
    console.log('MQTT Disconnected');
  }
}

安全配置

若需认证,在连接选项中添加凭据:

const options = {
  username: 'your_username',
  password: 'your_password',
  // 其他配置...
};

注意事项

  • WebSocket 地址需替换为实际 MQTT 代理地址(如 ws://test.mosquitto.org:8080
  • QoS 级别根据需求调整(0/1/2)
  • 生产环境建议使用 TLS 加密(wss://
  • 大流量场景需考虑消息队列优化

标签: 收发vue
分享给朋友:

相关文章

vue页面分离的实现

vue页面分离的实现

Vue页面分离的实现方法 将Vue页面分离为多个组件或模块,有助于提升代码可维护性和复用性。以下是几种常见的实现方式: 组件化拆分 通过将页面拆分为多个子组件,每个组件负责特定功能或UI部分。使用i…

vue实现switch

vue实现switch

Vue 实现 Switch 开关组件 在 Vue 中实现 Switch 开关组件可以通过自定义组件或使用现有 UI 库完成。以下是几种常见实现方式: 自定义 Switch 组件 创建一个基础 Sw…

vue 动画 实现

vue 动画 实现

vue 动画实现方法 Vue 提供了多种方式实现动画效果,主要包括过渡动画和动态动画两类。 使用 <transition> 组件实现基础过渡 通过 Vue 内置的 <transit…

实现vue cli

实现vue cli

安装 Vue CLI 确保系统中已安装 Node.js(版本建议 12.x 或更高)。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 安装完成后验证版本:…

vue实现画板

vue实现画板

Vue 实现画板功能 在 Vue 中实现画板功能可以通过 HTML5 的 Canvas API 实现。以下是一个完整的实现方案: 创建 Vue 组件 新建一个 Vue 单文件组件(SFC),命名为…

vue实现框选

vue实现框选

Vue 实现框选功能 在 Vue 中实现框选功能通常需要监听鼠标事件,计算选区范围,并根据选区范围高亮或选中元素。以下是实现框选功能的关键步骤。 监听鼠标事件 在 Vue 模板中,为容器元素绑定鼠标…