使用Vue连接Mqtt实现主题的订阅及消息发布

效果如下:
在这里插入图片描述
直接贴代码,本地创建一个html文件将以下内容贴入即可

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>MQTT 客户端</title><script src="https://cdn.jsdelivr.net/npm/vue@2"></script><script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script><style>body {font-family: Arial, sans-serif;margin: 0;padding: 20px;}h2 {margin-top: 20px;}form, .controls {margin-bottom: 20px;}.button {padding: 10px 20px;background-color: #007bff;color: white;border: none;border-radius: 5px;cursor: pointer;}.button:disabled {background-color: #ccc;cursor: not-allowed;}.message-area {width: 100%;height: 300px;resize: none;}</style>
</head>
<body><div id="app"><h2>MQTT服务器设置</h2><form><div class="controls"><label for="host">服务器地址:</label><input type="text" v-model="host" id="host" placeholder="ws://broker.emqx.io"><label for="port">服务器端口:</label><input type="text" v-model="port" id="port" placeholder="8083"></div><div class="controls"><label for="path">服务器路径:</label><input type="text" v-model="path" id="path" placeholder="/mqtt"><label for="clientID">客户端ID:</label><input type="text" v-model="clientID" id="clientID" placeholder="随机生成"></div><div class="controls"><label for="user">用户名:</label><input type="text" v-model="user" id="user" placeholder="test"><label for="password">密码:</label><input type="text" v-model="password" id="password" placeholder="123"></div></form><button class="button" @click="connectMQTT" :disabled="connected">连接</button><button class="button" @click="connectEND" :disabled="!connected">已断开</button><h2>MQTT订阅</h2><div class="controls"><label for="subtopic">主题:</label><input type="text" v-model="subtopic" id="subtopic" placeholder="test"></div><button class="button" @click="subscribe_topic">订阅</button><h2>MQTT消息发送</h2><div class="controls"><label for="topic">主题:</label><input type="text" v-model="topic" id="topic" placeholder="test"><label for="message">消息:</label><input type="text" v-model="message" id="message" placeholder="test"></div><button class="button" @click="sendMessage">发送</button><h1>消息框</h1><textarea class="message-area" id="messageTextArea" v-model="messageText" readonly></textarea></div><script>new Vue({el: '#app',data: {host: '',port: '8083',path: '/mqtt',clientID: '',user: 'test',password: 'test',connected: false,subtopic: 'test',topic: 'test',message: 'test',messageText: ''},methods: {connectMQTT() {var url = this.host + ':' + this.port + this.path;var options = {clientId: this.clientID || this.randomID(),username: this.user,password: this.password};this.client = mqtt.connect(url, options);this.client.on('connect', () => {this.connected = true;this.client.on('message', this.message_str);this.messageText += '已连接\n';});this.client.stream.on('error', (err) => {console.error('Connection error:', err);this.connectEND();});},connectEND() {if (this.client && this.client.connected) {this.client.end();this.connected = false;this.messageText += '已断开\n';}},sendMessage() {if (this.client && this.client.connected) {this.client.publish(this.topic, this.message);this.messageText += '已发送\n';}},subscribe_topic() {if (this.client && this.client.connected) {this.client.subscribe(this.subtopic);this.messageText += '已订阅' + this.subtopic + '\n';}},message_str(topic, message) {this.messageText += '收到来自主题:' + topic + '的消息:' + message.toString() + '\n';},randomID() {return 'clientID_' + Math.random().toString(16).substr(2, 8);}}});</script>
</body>
</html>

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

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

相关文章

深度学习论文: SuperPoint: Self-Supervised Interest Point Detection and Description

深度学习论文: SuperPoint: Self-Supervised Interest Point Detection and Description SuperPoint: Self-Supervised Interest Point Detection and Description PDF: https://arxiv.org/pdf/1712.07629 PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代…

【话题】如何看待AI技术,以及AI技术的发展现状和未来趋势

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景一、引言二、AIGC技术的发展现状2.1、技术突破与成果2.2、应用领域的拓展2.3、市场规模的增长 三、AIGC技术的未来趋势3.1、技术融合与创新3.2、应用领域的深化3.3、…

FlatBuffers 与 ProtocolBuffers 的区别

背景 FlatBuffers 和 Protocol Buffers&#xff08;通常简称 Protobuf&#xff09;都是由 Google 开发的序列化协议&#xff0c;用于在不同的程序或网络间有效地传输和存储结构化数据。尽管它们的目标相似&#xff0c;但在设计和使用上有一些关键的区别。 FlatBuffers 直接访…

绿盟之旅——一段安全实习结束

去年&#xff0c;因为着急找实习&#xff0c;拿着简历就开始海投&#xff0c;当时想的是有人让我去就谢天谢地了&#xff0c;第一个约我面试的就是绿盟&#xff0c;也很顺利的通过了面试&#xff0c;当时让我选择在上海还是北京&#xff0c;我选择的是上海&#xff0c;因为学校…

不要和别人比,要和自己的过去比!才会有进步!

现在的人都喜欢拿自己去和别人比较&#xff0c;当然是和比你混得好的人比&#xff0c;比你弱的你也不会去比。比如这个朋友又换了一辆车&#xff0c;那个朋友又买了一套房&#xff0c;另一个朋友又加薪了等等&#xff0c;比来比去总觉得比不上别人。这样比较对自己很不好&#…

Python脚本批量造数据、跑定时任务协助测试

批量造数据 连接Mysql的信息 1 import pymysql 2 # 数据库连接信息 3 # 多个库要有多个conn 4 conn pymysql.connect( 5 host"主机", 6 user"用户名", 7 password"密码", 8 database"库名" 9 ) 10 conn1 pymysql.connect(…

warning: in the working copy of ‘wxss/8.wxss‘, LF will be replaced by

git add --renormalize . git commit -m "Normalize line endings"

【组合数学】2842. 统计一个字符串的 k 子序列美丽值最大的数目

本文涉及知识点 组合数学汇总 LeetCode 2842. 统计一个字符串的 k 子序列美丽值最大的数目 给你一个字符串 s 和一个整数 k 。 k 子序列指的是 s 的一个长度为 k 的 子序列 &#xff0c;且所有字符都是 唯一 的&#xff0c;也就是说每个字符在子序列里只出现过一次。 定义 f…

24届电信红队实习生面经

sql注入的一些&#xff1a;原理、打的靶场的常见绕过、问了一些函数 (load_file、 outfile这些&#xff09;、后利用 (mysql的udf提权的原理、条件、利用、其他像mssql这些数据库的提权手段、这些就没细问了&#xff0c; 就问有哪些方式&#xff1b; 问了有没有实战遇到mysql的…

【小黑送书—第二十期】>>K邻算法:在风险传导中的创新应用与实践价值(文末送书)

01 前言 在当今工业领域&#xff0c;图思维方式与图数据技术的应用日益广泛&#xff0c;成为图数据探索、挖掘与应用的坚实基础。本文旨在分享嬴图团队在算法实践应用中的宝贵经验与深刻思考&#xff0c;不仅促进业界爱好者之间的交流&#xff0c;更期望从技术层面为企业在图数…

8款好用的电脑监控软件分享丨好资源不私藏!

电脑已经成为我们日常生活和工作的重要工具。随之而来的是&#xff0c;电脑监控的需求也逐渐增加。为了帮助大家更好地管理和监控电脑使用情况&#xff0c;本文将为您推荐8款好用的电脑监控软件。这些软件功能强大&#xff0c;易于使用&#xff0c;适用于各种场景&#xff0c;让…

【Leetcode】741.摘樱桃

给你一个 n x n 的网格 grid &#xff0c;代表一块樱桃地&#xff0c;每个格子由以下三种数字的一种来表示&#xff1a; 0 表示这个格子是空的&#xff0c;所以你可以穿过它。 1 表示这个格子里装着一个樱桃&#xff0c;你可以摘到樱桃然后穿过它。 -1 表示这个格子里有荆棘&am…

揭秘依赖注入:软件开发人员的基本指南

Dependency injection (DI) is a design pattern and programming technique to manage dependencies between different components. 依赖注入&#xff08;DI&#xff09;是一种用于管理不同组件之间依赖关系的设计模式和编程技术。 In DI, the dependencies of a class or ot…

【Linux】-Linux基础命令[2]

目录 一、目录切换相关命令 1、cd 2、pwd 二、相对路径、绝对路径和特殊路径符 1、相对路径和绝对路径 2、特殊路径符 三、创建目录命令&#xff08;mkdir&#xff09; 四、文件操作命令 1、touch 创建文件 2、cat查看文件内容 3、more查看文件内容 4、cp命令复制文…

【Unix】FlatBuffers 在 C++ 项目中的使用教程

在 C 项目中使用 FlatBuffers 主要涉及以下几个步骤&#xff1a; 1. 安装 FlatBuffers 首先&#xff0c;你需要在你的系统上安装 FlatBuffers 编译器和库。你可以从 FlatBuffers 的 GitHub 仓库 下载源码并编译&#xff1a; git clone https://github.com/google/flatbuffer…

【JAVA |数组】数组定义与使用、常见的Arrays类介绍

目录 一、前言 二、数组的创建和初始化 三、数组的使用 四、数组是引用类型 1.JVM的内存分配 2.与引用类型变量 3.null 五、二维数组 六、Java中Arrays类的常用方法 1. Arrays.fill ->填充数组 2. Arrays.sort ->数组排序 3. Arrays.toString ->数组打印 …

美易官方:美国经济已现裂痕?美联储再不降息,崩溃即将到来!

美国经济&#xff0c;一度被誉为全球最强大的经济体&#xff0c;如今似乎已显露出脆弱的迹象。华尔街的分析师们纷纷发出警告&#xff0c;呼吁美联储尽快降息&#xff0c;否则一场经济崩溃可能即将来临。 自美联储大幅加息以来&#xff0c;经济学家们一直警告称&#xff0c;高利…

那个在买珠宝的年轻人

金价搭上过山车&#xff0c;今年以来价格一路飙涨。 珍珠身价同步飙升&#xff0c;晋级珠宝圈“新宠”。 文玩圈“减龄”&#xff0c;盘珠串不再只是“老头乐”。 月薪3000的年轻人&#xff0c;悄悄实现“宝石”自由。 黄金珠宝走俏&#xff0c;这届年轻人到底有着怎样的珠宝…

开抖音小店需要交多少保证金?全类目选择,一篇了解

哈喽~我是电商月月 做抖音小店前大家都会搜索“入驻抖音小店需要准备什么东西&#xff1f;”其中就包含了一项&#xff1a;类目保证金的缴纳 那到底要交多少钱&#xff1f;很多新手朋友还是不太了解 今天我就给大家解答这个问题&#xff0c;首先&#xff0c;我们要知道抖店的…

高并发-线程池

文章目录 高并发-线程池2024心得好的博客必会面试题为什么使用线程池线程池的实现原理线程池的拒绝策略阻塞队列已满&#xff0c;在提交任务会发生什么问题threadlocal原理和使用多线程配置 高并发-线程池2024 心得 面试都是围绕着三高展开&#xff0c;高并发&#xff0c;高可…