当前位置:   article > 正文

MQTT 的使用_前端mqtt 链接mqtt

前端mqtt 链接mqtt

文章目录

一、为什么要使用 MQTT

二、使用 MQTT

1. 二次封装 mqtt

2. 使用封装的 mqtt


一、为什么要使用 MQTT

MQTT 是一种基于发布/订阅模式的轻量级物联网消息传输协议,可以用极少的代码和带宽为联网设备提供实时可靠的消息服务,它广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等行业。

当我们需要和物联网端进行交互时,就需要用到 MQTT

二、使用 MQTT

npm i -S mqtt

前端想要使用 MQTT,需要先下载 mqtt 这个依赖,该库支持浏览器环境和 Node.js 环境,浏览器环境只支持 WebSocket 连接,而 Node.js 环境支持 WebSocket 和 MQTT 连接,下面以浏览器为例

1. 二次封装 mqtt

下载好 mqtt 依赖后,先进行简单的二次封装,可以使用 Class 或 Function 进行二次封装,以下以 Function 封装为例

  1. import * as mqtt from "mqtt/dist/mqtt.min";
  2. export default function (
  3.  url: string, // 连接地址
  4.  onMessage: (tioic: string, msg: any) => void, // 收到信息后的回调
  5.  theme?: string // 需要订阅的主题
  6. ) {
  7.  // 创建连接
  8.  const client = mqtt.connect(url);
  9.  // 值为1是,断开连接
  10.  client.close = 0;
  11.    // 连接成功回调
  12.  client.on("connect", (e: unknown) => {
  13.    console.log("连接成功");
  14.    // 订阅
  15.    if (theme) {
  16.      client.subscribe(theme, { qos: 0 }, (error: unknown)=> {
  17.   if (error) {
  18.     console.log("订阅失败", error);
  19.   } else {
  20.     console.log("订阅成功");
  21.   }
  22. });
  23.   }
  24.    // 监听信息,topic:收到信息的主题;message:收到的数据
  25.    client.on("message", (topic: string, message: any) => {
  26.      // 收到信息后,执行回调,将数据和
  27.      onMessage(topic, info);
  28.      // 取消订阅
  29.      if (client.close && theme) {
  30.        console.log("取消订阅");
  31.        client.unsubscribe(theme, { qos: 0 }, (error: unknown) => {
  32.   if (error) {
  33.     console.log("取消订阅失败", error);
  34.   }
  35. });
  36.     }
  37.      return;
  38.   });
  39.    // 重新连接
  40.    client.on("reconnect", (err: unknown) => {
  41.      console.log("正在重新连接", err);
  42.   });
  43.    // 连接失败
  44.    client.on("error", (err: unknown) => {
  45.      console.log("连接失败");
  46.   });
  47. });
  48.  return client;
  49. }

2. 使用封装的 mqtt

  1. // 引入 二次封装的 mqtt
  2. import mqtt from "@/utils/mqtt";
  3. const mqttMsg = (tioic: string, msg: unknown)=>{
  4.    console.log("收到的数据",{tioic,msg});
  5. }
  6. const client = mqtt(
  7.    "ws://127.0.0.1:3100", // 连接的ip和端号
  8.    mqttMsg, // 回调函数
  9.    "zs/channel/live" // 订阅的主题
  10. );
  11. setTimeout(() => {
  12.  client.close = 1 // 断开 mqtt 连接
  13. }, 10000);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/188582
推荐阅读
相关标签
  

闽ICP备14008679号