赞
踩
文章目录
MQTT 是一种基于发布/订阅模式的轻量级物联网消息传输协议,可以用极少的代码和带宽为联网设备提供实时可靠的消息服务,它广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等行业。
当我们需要和物联网端进行交互时,就需要用到 MQTT
npm i -S mqtt
前端想要使用 MQTT,需要先下载 mqtt 这个依赖,该库支持浏览器环境和 Node.js 环境,浏览器环境只支持 WebSocket 连接,而 Node.js 环境支持 WebSocket 和 MQTT 连接,下面以浏览器为例
下载好 mqtt 依赖后,先进行简单的二次封装,可以使用 Class 或 Function 进行二次封装,以下以 Function 封装为例
- import * as mqtt from "mqtt/dist/mqtt.min";
-
- export default function (
- url: string, // 连接地址
- onMessage: (tioic: string, msg: any) => void, // 收到信息后的回调
- theme?: string // 需要订阅的主题
- ) {
- // 创建连接
- const client = mqtt.connect(url);
- // 值为1是,断开连接
- client.close = 0;
-
- // 连接成功回调
- client.on("connect", (e: unknown) => {
- console.log("连接成功");
-
- // 订阅
- if (theme) {
- client.subscribe(theme, { qos: 0 }, (error: unknown)=> {
- if (error) {
- console.log("订阅失败", error);
- } else {
- console.log("订阅成功");
- }
- });
- }
-
- // 监听信息,topic:收到信息的主题;message:收到的数据
- client.on("message", (topic: string, message: any) => {
- // 收到信息后,执行回调,将数据和
- onMessage(topic, info);
-
- // 取消订阅
- if (client.close && theme) {
- console.log("取消订阅");
- client.unsubscribe(theme, { qos: 0 }, (error: unknown) => {
- if (error) {
- console.log("取消订阅失败", error);
- }
- });
- }
- return;
- });
-
- // 重新连接
- client.on("reconnect", (err: unknown) => {
- console.log("正在重新连接", err);
- });
-
- // 连接失败
- client.on("error", (err: unknown) => {
- console.log("连接失败");
- });
- });
-
- return client;
- }
- // 引入 二次封装的 mqtt
- import mqtt from "@/utils/mqtt";
-
- const mqttMsg = (tioic: string, msg: unknown)=>{
- console.log("收到的数据",{tioic,msg});
- }
-
- const client = mqtt(
- "ws://127.0.0.1:3100", // 连接的ip和端号
- mqttMsg, // 回调函数
- "zs/channel/live" // 订阅的主题
- );
-
- setTimeout(() => {
- client.close = 1 // 断开 mqtt 连接
- }, 10000);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。