vue使用mqtt实现实时接收消息

连接
connectToMQTT() {
      const brokerUrl = "ws://XXX.XXX.XXX.XX:XXXXX/mqtt"; // 根据实际情况调整URL
      const clientId= `mqtt_${Math.random().toString(16).substring(2, 8)}`;
      this.mqttClient = mqtt.connect(brokerUrl, {
        username: "",
        password: "",
        clientId:""
      });
      console.log(this.mqttClient.on);
      // 连接成功回调
      this.mqttClient.on("connect", () => {
        console.log("Connected to MQTT broker");
      });
      // 错误处理
      this.mqttClient.on("error", (err) => {
        console.error("MQTT connection error:", err);
      });
    },
   
订阅
    doSubscribe() {
      const topic = `/XXXXXX/XXXXX`;
      this.mqttClient.subscribe(topic, (err, res) => {
        if (!err) {
          console.log(`Subscribed to topic: ${topic}`, res);
        } else {
          console.error("Failed to subscribe:", err);
        }
        this.mqttClient.on("message", (topic, message) => {
          //收到消息回调
          console.log(topic, message, "topic, message");
        });
      });
    },
    
取消订阅
    doUnSubscribe() {
      const topic = `/XXXXXX/XXXXXXXX;
      this.mqttClient.unsubscribe(topic, (error) => {
        if (error) {
          console.log("Unsubscribe error", error);
        }else{
          console.log("Unsubscribe success");
        }
      });
    },
断开连接
destroyed() {
    if (this.mqttClient.connected) {
      try {
        this.mqttClient.end(false, () => {
          console.log('Successfully disconnected!')
        })
      } catch (error) {
        console.log('Disconnect failed', error.toString())
      }
    }
  }
QoS

MQTT(Message Queuing Telemetry Transport)协议中的QoS(Quality of Service,服务质量)是指控制消息传递可靠性的机制。它定义了消息从发布者到订阅者之间传输时的保障级别。MQTT协议提供了三种不同的QoS级别,每种级别都权衡了消息的可靠性和网络带宽的使用效率:

1. **QoS 0(At Most Once)**:
   - 这是最基本的传输模式,消息可能会丢失,也可能被重复发送,但至少尝试发送一次。
   - 发布者不会等待确认消息,因此这种模式下消息传输最快,但最不可靠。
   - 适用于对消息丢失不敏感的应用场景,如传感器数据,其中偶尔丢失的数据不会严重影响整体结果。

2. **QoS 1(At Least Once)**:
   - 保证消息至少被传递一次,可能会有重复。
   - 发布者需要从broker接收到一个确认(PUBACK)消息,如果没收到确认则会重发。
   - 这个级别增加了消息传输的可靠性,但同时也增加了网络开销和延迟。
   - 适用于需要确保消息被接收但可以容忍少量重复的场景。

3. **QoS 2(Exactly Once)**:
   - 提供了最高级别的消息传输保证,消息只被传递一次,不会有丢失或重复。
   - 实现这个级别的机制比较复杂,包括了四步交互过程(PUBLISH, PUBREC, PUBREL, PUBCOMP)来确保消息的准确无误。
   - 这是MQTT中最可靠但也最消耗资源的传输模式。
   - 适合对数据完整性和顺序高度敏感的应用,例如财务交易或关键指令的传输。

选择哪个QoS级别取决于具体应用场景的需求,既要考虑数据的重要性,也要考虑网络条件和系统资源的限制。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值