Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

vue mqtt

作者:戮尽逆者   发布日期:2025-07-11   浏览:32

// 引入 mqtt 库
import mqtt from 'mqtt';

// 创建一个 Vue 组件来演示 MQTT 的使用
export default {
  name: 'MqttExample',
  data() {
    return {
      client: null,
      message: ''
    };
  },
  mounted() {
    // 连接到 MQTT 服务器
    this.client = mqtt.connect('ws://broker.hivemq.com:8000/mqtt'); // 使用 HiveMQ 公共测试服务器

    // 连接成功时的回调函数
    this.client.on('connect', () => {
      console.log('Connected to MQTT broker');
      // 订阅主题
      this.client.subscribe('vue-mqtt-example');
    });

    // 接收到消息时的回调函数
    this.client.on('message', (topic, payload) => {
      console.log(`Received message on topic ${topic}: ${payload.toString()}`);
      this.message = `Received message on topic ${topic}: ${payload.toString()}`;
    });
  },
  methods: {
    // 发布消息到指定主题
    publishMessage() {
      const message = prompt('Enter your message:');
      if (message) {
        this.client.publish('vue-mqtt-example', message);
        console.log(`Published message: ${message}`);
      }
    }
  },
  beforeDestroy() {
    // 组件销毁前断开连接
    if (this.client) {
      this.client.end();
    }
  }
};

解释说明:

  1. 引入 mqtt 库:我们使用 import mqtt from 'mqtt'; 来引入 MQTT 库,这个库可以帮助我们轻松地连接到 MQTT 代理并进行消息的发布和订阅。

  2. 创建 Vue 组件:我们创建了一个名为 MqttExample 的 Vue 组件,用于演示如何在 Vue 中使用 MQTT。

  3. 连接到 MQTT 服务器:在组件挂载时(mounted 生命周期钩子),我们通过 mqtt.connect 方法连接到 MQTT 服务器。这里我们使用的是 HiveMQ 提供的公共测试服务器 ws://broker.hivemq.com:8000/mqtt,你可以根据需要替换为自己的 MQTT 服务器地址。

  4. 连接成功时的回调函数:当连接成功后,会触发 connect 事件,我们在其中订阅了 vue-mqtt-example 主题。

  5. 接收消息时的回调函数:当有新消息到达时,会触发 message 事件,我们在其中更新组件的状态以显示接收到的消息。

  6. 发布消息:我们定义了一个 publishMessage 方法,用于提示用户输入消息并将其发布到 vue-mqtt-example 主题。

  7. 组件销毁前断开连接:在组件销毁之前(beforeDestroy 生命周期钩子),我们确保断开与 MQTT 服务器的连接,以避免资源泄漏。

希望这段代码和解释对你有所帮助!

上一篇:vue h

下一篇:vue3全局变量

大家都在看

vue.config.js configu

node.js vue

vue 图表组件

vue3watch监听多个变量

vue查看版本

vue3 reactive对象重新赋值

vue等待几秒

vue3 setup computed

vue screenfull

vue json.stringify

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站