vue订阅MQTT,从EMQX中订阅

1、安装依赖

npm install mqtt -S

2、组件内引用

import mqtt from 'mqtt'

3、定义data

connection:{
          //连接信息
          host: 'localhost',
          port: 8083,
          endpoint: '/mqtt',
          clean: true, // 保留回话
          connectTimeout: 4000, // 超时时间
          reconnectPeriod: 4000, // 重连时间间隔
          //clientId,这个是EMQ Dashboard的上的clientId 对应就好
          // clientId: 'emq2',
          clientId: 'emq2',
          username: 'xxxxx',
          password: 'ccccc',
        },
        mqttClient:null,//mqtt连接对象

4、订阅连接

createMqttConnect(){
        //创建连接MQTT
        const { host, port, endpoint, ...options } = this.connection
        const connectUrl = `ws://${host}:${port}${endpoint}`
        this.mqttClient=mqtt.connect(connectUrl, this.options) //建立连接
        this.mqttClient.on('connect', (res) => {
          console.log('连接成功')
          // 这儿直接获取订阅的主题就好了
          this.mqttClient.subscribe('testtopic', {
              qos: 1 // 这儿直接EMQ的qos对应的就好了
            }, (res) => {
              if (!res) {
                console.log('订阅成功');
              } else {
                console.log('订阅失败');
              }
          })
        })
      },
      closeMqtt(){
        //MQTT关闭连接
        this.mqttClient.end()
      },
      mqttTest(){
        //测试MQTT订阅
        this.createMqttConnect()
        this.mqttClient.on('message', (topic, message) => {
          console.log('收到来自', topic, '的消息', message.toString())
        })
      },

5、常用端口

1883 MQTT TCP 协议端口

8883 MQTT/TCP SSL 端口

8083 MQTT/WebSocket 端口

8084 MQTT/WebSocket with SSL 端口

8080 MQTT执行引擎HTTP API 端口

18083 EMQX Dashboard 管理控制台端口

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue 使用 MQTT,一般需要安装 `paho-mqtt` 库。可以通过 `npm` 进行安装: ``` npm install paho-mqtt --save ``` 接下来,我们可以在 Vue 的组件使用 `paho-mqtt` 库进行 MQTT 的发布和订阅。 首先,需要创建一个 MQTT 的客户端连接对象,可以在 Vue 组件的 `created` 生命周期进行创建: ```javascript created() { // 创建 MQTT 客户端连接对象 this.client = new Paho.MQTT.Client("localhost", 8000, "clientId"); // 连接服务器 this.client.connect({ onSuccess: this.onConnect }); }, ``` 其,`Paho.MQTT.Client` 是 `paho-mqtt` 库提供的 MQTT 客户端连接对象。它的构造函数需要传入三个参数: - `host`:MQTT 服务器的主机名或 IP 地址; - `port`:MQTT 服务器的端口号; - `clientId`:客户端 ID。 接下来,我们可以在 `onConnect` 回调函数订阅 MQTT 主题: ```javascript onConnect() { // 订阅主题 this.client.subscribe("testTopic"); }, ``` 其,`this.client.subscribe` 方法用于订阅 MQTT 主题,需要传入一个主题名称作为参数。 当客户端收到 MQTT 消息时,会触发 `onMessageArrived` 回调函数。可以在该函数处理接收到的消息: ```javascript onMessageArrived(message) { console.log("Received message:", message.payloadString); }, ``` 最后,我们可以在 Vue 组件定义发布消息的方法: ```javascript methods: { // 发布消息 publishMessage() { const message = new Paho.MQTT.Message("Hello, MQTT!"); message.destinationName = "testTopic"; this.client.send(message); }, }, ``` 其,`Paho.MQTT.Message` 是 `paho-mqtt` 库提供的 MQTT 消息对象。它的构造函数需要传入一个字符串作为消息内容。接着,我们需要为消息设置目标主题,然后通过 `this.client.send` 方法将消息发送出去。 完整的代码示例如下: ```javascript <template> <div> <button @click="publishMessage">发布消息</button> </div> </template> <script> import Paho from "paho-mqtt"; export default { data() { return { client: null, }; }, created() { // 创建 MQTT 客户端连接对象 this.client = new Paho.MQTT.Client("localhost", 8000, "clientId"); // 连接服务器 this.client.connect({ onSuccess: this.onConnect }); }, methods: { // MQTT 连接成功回调函数 onConnect() { // 订阅主题 this.client.subscribe("testTopic"); }, // MQTT 收到消息回调函数 onMessageArrived(message) { console.log("Received message:", message.payloadString); }, // 发布消息 publishMessage() { const message = new Paho.MQTT.Message("Hello, MQTT!"); message.destinationName = "testTopic"; this.client.send(message); }, }, mounted() { // 注册 MQTT 消息接收回调函数 this.client.onMessageArrived = this.onMessageArrived; }, }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值