vue uniapp MEQX JWT认证

1.下载依赖
npm install mqtt

import * 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 认证

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

同三维T908转换器 SDI转DVI/HDMI/VGA/色差分量/AV转换器

同三维T908转换器 SDI转DVI/HDMI/VGA/色差分量/AV转换器 1路SDI进&#xff0c;1路DVI(可转HDMI/VGA/色差分量/AV)3.5音频1路SDI出,可以支持音频解嵌&#xff0c;也可把3.5音频加嵌转换输出&#xff0c;输出分辨率可调&#xff0c;支持图像翻转180度 一、产品简介 SDI转万能转…

新能源行业必会基础知识-----电力市场概论笔记-----经济学基础

新能源行业知识体系-------主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/139946830 目录 1. 什么是市场2. 电力市场机制设计的基本要求 1. 什么是市场 经济学定义 市场是供需双方交易并决定商品价格和产量的机制市场可…

【阅读论文】-- IDmvis:面向1型糖尿病治疗决策支持的时序事件序列可视化

IDMVis: Temporal Event Sequence Visualization for Type 1 Diabetes Treatment Decision Support 摘要1 引言2 1 型糖尿病的背景3 相关工作3.1 时间事件序列可视化3.2 电子健康记录可视化3.3 1 型糖尿病可视化3.4 任务分析与抽象 4 数据抽象5 层次化任务抽象5.1 临床医生工作…

华为BGP路由实验基础1------用物理口建立对等体

1.用物理口做BGP建立对等体建立BGP连接 实验拓扑&#xff1a; 实验步骤&#xff1a; 1.完成基本配置 sys [Huawei]sys AR1 [AR1]undo in e [AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [AR1-GigabitEthernet0/0/0]q [AR1] sys [Huawei]sys AR2 [AR2]undo i…

用自己电脑部署大模型,私有化,很香!

这段时间一直在研究大语言模型私有部署的相关内容&#xff0c;相信大家也非常的感兴趣。 到目前为止&#xff0c;其实还是有很多的开源模型&#xff0c;其实大家去 GitHub Trending 上看看&#xff0c;就能够发现很多。 今天也是手把手地教大家怎么在自己的电脑上部署一个大语…

Qt—贪吃蛇项目(由0到1实现贪吃蛇项目)

用Qt实现一个贪吃蛇项目 一、项目介绍二、游戏大厅界面实现2.1完成游戏大厅的背景图。2.2创建一个按钮&#xff0c;给它设置样式&#xff0c;并且可以跳转到别的页面 三、难度选择界面实现四、 游戏界面实现五、在文件中写入历史战绩5.1 从文件里提取分数5.2 把贪吃蛇的长度存入…

如何断点调试opencv源码

分几个步骤&#xff1a; 1、下载opencv-4.10.0-windows.exe https://opencv.org/releases/ 2、想要调试opencv的源码&#xff0c;只需要将这两个文件拷贝到我们自己项目的可执行文件的同级目录内即可。 完成拷贝后&#xff0c;直接在vs工程中打断点F11进行单步调试&#xff…

ASP.NET MVC-简单例子-配置日志文件-log4net

环境&#xff1a; win10&#xff0c;SQL Server 2008 R2 安装 使用NuGet 安装时发现报错并无法安装&#xff1a; 现有 packages.config 文件中检测到一个或多个未解析包依赖项约束。必须解析所有依赖项约束以添加或更新包。如果正在更新这些包&#xff0c;则可忽略此消息&am…

2024-6-28 石群电路-32

2024-6-28&#xff0c;星期五&#xff0c;20:05&#xff0c;天气&#xff1a;雨&#xff0c;心情&#xff1a;晴。今天没有什么事情发生&#xff0c;继续学习&#xff0c;加油&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 1. 对称三相电路的计算&#xff08…

算法基础--------【图论】

图论&#xff08;待完善&#xff09; DFS:和回溯差不多 BFS:进while进行层序遍历 定义: 图论&#xff08;Graph Theory&#xff09;是研究图及其相关问题的数学理论。图由节点&#xff08;顶点&#xff09;和连接这些节点的边组成。图论的研究范围广泛&#xff0c;涉及路径、…

学习笔记——动态路由——OSPF(OSPF协议的工作原理)

八、OSPF协议的工作原理 1、原理概要 (1)相邻路由器之间周期性发送HELLO报文&#xff0c;以便建立和维护邻居关系 (2)建立邻居关系后&#xff0c;给邻居路由器发送数据库描述报文(DBD)&#xff0c;也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器…

【PHP项目实战训练】——后台-RBAC权限管理原理

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

Minecraft玩家设计专用程序 让Google地球可以在游戏中探索

在 Minecraft 中以真实的比例建造真实的地方并不是什么新鲜事。不过&#xff0c;康奈尔理工学院的一名毕业生最近展示了一种方法&#xff0c;可以自动生成一个忠实的 Minecraft 地球&#xff0c;并定期更新。他将在 7 月底举行的 SIGGRAPH 2024 大会上公布该项目的成果。 在七月…

确认偏差:金融市场交易中的隐形障碍

确认偏差&#xff0c;作为一种深刻影响交易员决策与表现的心理现象&#xff0c;其核心在于个体倾向于寻求与既有信念相符的信息&#xff0c;而自动过滤或轻视与之相悖的资讯。这种认知偏见严重扭曲了交易者的决策过程&#xff0c;导致他们过分依赖符合既有观念的数据&#xff0…

鸿蒙开发设备管理:【@ohos.deviceInfo (设备信息)】

设备信息 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import deviceInfo from ohos.deviceInfo属性 系统能力&#xff1a;以下各项对应的系统能力均为SystemCapability.Startup.S…

构建一个让世界瞩目的海外短剧生态系统

构建一个让世界瞩目的海外短剧生态系统是一个复杂但富有挑战性的任务。旨在创建一个全球范围内具有影响力的海外短剧生态系统&#xff1a; 一、市场定位与战略规划 1、深入了解目标市场&#xff1a;研究海外观众的观看习惯、喜好和付费意愿&#xff0c;以制定有针对性的市场策…

3d模型里地毯的材质怎么赋予?---模大狮模型网

在进行3D建模时&#xff0c;赋予地毯逼真的材质是营造现实感和增强场景氛围的重要步骤。模大狮将介绍在常见的3D建模软件中&#xff0c;如何有效地为地毯赋予各种材质&#xff0c;以及一些实用的技巧和注意事项。 一、选择合适的地毯材质 在3D建模中&#xff0c;地毯的材质选择…

OOXML入门学习

进入-飞入 <par> <!-- 这是一个并行动画序列的开始。"par"代表并行&#xff0c;意味着在这个标签内的所有动画将同时开始。 --><cTn id"5" presetID"2" presetClass"entr" presetSubtype"4" fill"hold&…

MS5208T/MS5208N——2.7V 到 5.5V、 12Bit、8 通道轨到轨输出数模转换器

MS5208T/MS5208N 是一款 12Bit 、 8 通道输出的电压型 DAC &#xff0c;内部集成上电复位电路、轨到轨输出 Buffer 。接口采用 三线串口模式&#xff0c;最高工作频率可以到 40MHz &#xff0c;兼容 SPI 、 QSPI 、 DSP 接口和 Microwire 串口。输出接到一个轨到轨…

“AI+”时代,群核科技进化成了家居设计打工人理想的样子

6月&#xff0c;2024世界智能产业博览会上&#xff0c;人工智能大模型展团以“AI大模型驱动新质生产力”为主题&#xff0c;各家企业纷纷提到了基于不同行业场景的应用。 这透露出当前的行业发展趋势强调大模型落地核心行业&#xff0c;产生业务价值。其中&#xff0c;“AI图像…