vue uniapp MEQX JWT认证

1.下载依赖
npm install mqttimport * as mqtt from "mqtt/dist/mqtt.min" ​ 我是用的uniapp vue3 vite这里尝试了很多方式,都导入不进去后来我就采用的本地引入方式,
把mqtt.min.js下载到本地然后在index.html 中导入<script src="./MEQX/mqtt.js" type="text/javascript">
2.在EMQX后台创建一个JWT认证方式

并设置Secret,Payload根据子级需求设置,注意Expected Value不能大写全部小写
3.生成token
1.在线工具
通过在线网址生成 https://jwt.io/
PAYLOAD:DATA的值是需要和代码对应的,如果不需要就的话就填写{"password":""}
VERIFY SIGNATURE的Secret一定要记得填写
​
生成好后将这个值填写到password后
const options = {clientId,username,password: "生成的值"
}client = mqtt.connect(`${MQTT_IP}`, options)
 

2.通过jose包生成
下载jose  npm i jose
​
payload参数根据自己需求
​
import { SignJWT } from 'jose'
//emqxsecret就是后台的Secret
const secret = new TextEncoder().encode('emqxsecret')
export async function createJWT(username, clientId) {const payload = {username,clientId,}
​const jwt = await new SignJWT(payload).setProtectedHeader({ alg: 'HS256' }).setIssuedAt().setExpirationTime('2h').sign(secret)
​console.log(`Encoded JWT: ${jwt}`)return jwt
}
4.最后进行连接和其他操作
import { userStore } from '@/store/user.js'
import { createJWT } from './jose.js'
​
const MQTT_IP = 'ws://192.168.31.20:8083/mqtt'
​
let client = null
​
const subscription = {topic: `topic`,qos: 1,
}
​
async function MEQXConnect(roomid = 1) {
​subscription.topic = `topic${roomid}`
​const userPinia = userStore()//传给mqtt.connect要是字符串是数字的不行,我传的数字失败了const clientId = String(userPinia.userInfo.id)
​const username = String(userPinia.userInfo.nickName)
​const token = await createJWT(username, clientId)
​const options = {clientId,username,password: token}
​client = mqtt.connect(`${MQTT_IP}`, options)
​client.on('connect', () => {console.log('MEQX连接成功----------');doSubscribe()})
​client.on('error', () => {console.log('MEQX连接失败------------');})
​client.on('reconnect', () => {console.log('MEQX重新连接----------');})
​client.on('end', () => {console.log('MEQX重新断开------------');})
​client.on('close', () => {console.log('MEQX重新关闭------------');})
​client.on('offline', () => {console.log('MEQX客户端下线------------');})
​client.on("message", (topic, message) => {console.log(`MEQX received message: ${message} from topic: ${topic}`);})
​//订阅const doSubscribe = () => {client.subscribe(subscription.topic, subscription.qos,(error, granted) => {if (error) {console.log("subscribe error:", error)return}console.log("subscribe successfully:", granted)})}
}
​
//取消订阅
export const doUnSubscribe = () => {client.unsubscribe(subscription.topic, subscription.qos, (error) => {if (error) {console.log("unsubscribe error:", error)return;}console.log(`unsubscribed topic: ${subscription.topic}`)})
}
​
export default MEQXConnect

 参考地址

使用 Vue.js 通过 MQTT.js 连接到部署
JWT 认证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/35287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rapidocr-onnxruntime库及在open-webui上传PDF 图像处理 (使用 OCR)应用

背景 rapidocr-onnxruntime是一个跨平台的OCR库&#xff0c;基于ONNXRuntime推理框架。 目前已知运行速度最快、支持最广&#xff0c;完全开源免费并支持离线快速部署的多平台多语言OCR。 缘起&#xff1a;百度paddle工程化不是太好&#xff0c;为了方便大家在各种端上进行oc…

终极指南:解决iCloud备份错误代码的全面策略

终极指南&#xff1a;解决iCloud备份错误代码的全面策略 在数字化时代&#xff0c;数据安全至关重要。iCloud作为Apple提供的云服务&#xff0c;为我们的iPhone、iPad等设备提供了便捷的数据备份与恢复功能。然而&#xff0c;在使用过程中&#xff0c;我们可能会遇到各种备份错…

ros,open3d单线激光雷达数据可视化

之前一直尝试将可视化写在ros的回调函数中&#xff0c;visualization一直会阻塞进程&#xff0c;换一种方式可以顺利实现可视化 import rospy import open3d as o3d import numpy as np from sensor_msgs.msg import LaserScanglobal scan_data scan_data Nonedef callback_l…

机器学习之对比学习方法SimSiam(Simple Siamese)

SimSiam(Simple Siamese)是一种自监督对比学习方法,由Facebook AI Research于2021年提出。SimSiam的设计旨在避免负样本对,并且不使用动量编码器,进一步简化了对比学习的实现过程。 SimSiam的基本概念 自监督学习: 自监督学习方法通过从数据本身获取监督信号进行学习,不…

qt 播放音频 c++

目录 不能播放&#xff1a; 可以播放&#xff1a; 原因&#xff1a; QT core gui sql network multimedia 不能播放&#xff1a; #include <QMediaPlayer>QMediaPlayer player;// player.setMedia(QUrl("qrc:/res/raw/qs.mp3"));player.setMedia(QU…

近邻算法基础概念

近邻算法&#xff0c;尤其是K-最近邻&#xff08;K-Nearest Neighbors, KNN&#xff09;算法&#xff0c;是一种基于实例的学习方法&#xff0c;广泛应用于分类和回归分析中。 基本概念 目的&#xff1a;KNN算法的目的是对新的未知样本进行分类&#xff08;或预测其数值&…

一款强大的上位机模拟通讯工具----HslCommunicationDemo

目录 引言 工具概述 官网下载链接 安装步骤 使用教程 引言 在工业自动化和机器人控制领域&#xff0c;上位机模拟通讯工具是工程师和开发者日常工作中不可或缺的一部分。这些工具不仅能帮助我们验证设备间的通信状态&#xff0c;还能在设备调试和集成过程中提供极大的便利。…

38.控制功能实现

上一个内容&#xff1a;37.添加简易的调试功能 以 37.添加简易的调试功能 它的代码为基础进行修改 效果图&#xff1a; 下图红框位置的功能实现 Dlls项目中添加一个Dialog Dialog如下 然后给它添加一个类&#xff0c;MFC添加的类可能会报错添加 #include "afxdialogex.h…

聚酰胺-酰亚胺(PAI)应用前景广阔 酰氯法和异氰酸酯法为其主流制备方法

聚酰胺-酰亚胺&#xff08;PAI&#xff09;应用前景广阔 酰氯法和异氰酸酯法为其主流制备方法 聚酰胺-酰亚胺又称PAI&#xff0c;是一种分子链呈酰亚胺环和酰胺键有规则交替排列的高性能热塑性树脂。PAI具有耐磨耗性能好、摩擦系数低、尺寸稳定性好、耐高温、耐辐射、化学稳定性…

通俗易懂的Chat GPT以及国内GPT推荐

ChatGPT是一种先进的聊天机器人&#xff0c;它的全称是“生成式预训练变换器”&#xff08;Generative Pre-trained Transformer&#xff09;。ChatGPT背后的基本原理可以简化为以下几个关键点&#xff1a; 大规模语言模型&#xff1a; ChatGPT建立在一个大规模的语言模型之上&…

如何选择OLED弧形屏厂家

在选择OLED弧形屏厂家时&#xff0c;为确保采购到高质量且符合需求的产品&#xff0c;需要综合考虑多个因素。以下是一份详细的指南&#xff0c;帮助您清晰、系统地选择OLED弧形屏厂家&#xff1a; 一、技术实力 研发能力&#xff1a;了解厂家在OLED显示技术方面的研发能力&…

华为云L实例云服务器部署前后端分离项目全过程记录

1、配置云服务器 https://blog.csdn.net/modaoshi51991/article/details/139547630 2、上传前端项目并配置nginx 首先在前端项目运行以下代码将项目打包 我遇到node.js和openssl两个版本不兼容问题&#xff0c;更新版本依次解决即可 vue-cli-service build看一下package.json…

第12集《大乘起信论》

请大家打开《讲义》第二十四页&#xff0c;卯三、总显四种大义。 这一大科是讲到心生灭门。生灭的因缘是依止阿赖耶识&#xff0c;阿赖耶识当中有两种功能&#xff1a;一个是觉&#xff0c;一个是不觉。觉悟的功能又分成两种&#xff1a;一个是始觉&#xff0c;一个是本觉。我…

解决SpringMVC使用MyBatis-Plus自定义MyBaits拦截器不生效的问题

自定义MyBatis拦截器 如果是SpringBoot项目引入Component注解就生效了&#xff0c;但是SpringMVC不行 import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.parameter.ParameterHandler; import org.apache.ibatis.executor.statement.StatementHandler; i…

亮数据,一款新的低代码爬虫利器!

在当今数据驱动型时代&#xff0c;数据采集和分析能力算是个人和企业的核心竞争力。然而&#xff0c;手动采集数据耗时费力且效率低下&#xff0c;而且容易被网站封禁。 我之前使用过一个爬虫工具&#xff0c;亮数据&#xff08;Bright Data&#xff09; &#xff0c;是一款低…

力扣随机一题 哈希表 排序 数组

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2491.划分技能点相等的团队【中等】 题目&#xff1a; 给你一个正整数数组…

【深海王国】小学生都能玩的单片机?零基础入门单片机Arduino带你打开嵌入式的大门!(9)

Hi٩(๑o๑)۶, 各位深海王国的同志们&#xff0c;早上下午晚上凌晨好呀~辛勤工作的你今天也辛苦啦 (o゜▽゜)o☆ 今天大都督继续为大家带来系列——小学生都能玩的单片机&#xff01;带你一周内快速走进嵌入式的大门&#xff0c;let’s go&#xff01; &#xff08;9&#x…

殷山:摩斯大模型隐私保护技术和应用探索

背景介绍 6月20日下午&#xff0c;“2024信通院数据智能大会”圆满落幕&#xff0c;摩斯技术负责人殷山在论坛上分享了摩斯在大模型隐私保护技术和行业应用的探索。 殷山发表“大模型隐私保护”主题演讲 摩斯技术负责人殷山在“数据智能安全主题论坛“上&#xff0c;带来“大…

web学习笔记(六十八)项目总结

目录 1.如何取到对象的第一项的键名 2.如何在键名不确定的情况下取到对象的第一项的值 3.如何获取对象的长度 4.计算属性和watch监听监听深层数据 5.样式穿透 1.如何取到对象的第一项的键名 可以通过Object.keys将对象转化为一个包含对象所有可枚举属性名的数组&#xff…

Java中的微服务架构实现方法

Java中的微服务架构实现方法 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在当今软件开发的环境中&#xff0c;微服务架构已经成为了构建大型应用程序的主流…