使用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.hqwc.cn/news/681364.html

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

相关文章

【最大公约 调和级数 并集查找】2709. 最大公约数遍历

涉及知识点 最大公约 调和级数 并集查找&#xff08;并差集) 质数、最大公约数、菲蜀定理 LeetCode 2709. 最大公约数遍历 给你一个下标从 0 开始的整数数组 nums &#xff0c;你可以在一些下标之间遍历。对于两个下标 i 和 j&#xff08;i ! j&#xff09;&#xff0c;当且…

社区停车道闸系统价格一套多少?停车道闸系统十大品牌是哪些?

一、什么是停车道闸系统&#xff1f; 停车道闸系统是利用现代科学技术手段&#xff0c;对进出特定区域的车辆进行自动识别、控制和管理的系统。通常包含车牌识别、聚合收费、自动升降杆、车位引导等功能&#xff0c;可以有效提高车辆通行的安全性和管理效率。停车道闸系统广泛…

【Elasticsearch<五>末篇 ✈️✈️】结合 kibana 实现索引中 IP 地址分布地图可视化

目录 &#x1f44b;前言 &#x1f440;一、ES 地理位置基本了解 &#x1f331;二、IP 地址地图可视化 2.1 创建预处理通道 2.2 创建索引库 2.3 插入一条数据 2.4 观察写入后的数据 2.5 可视化展示 &#x1f604;三、章末 &#x1f44b;前言 继前面了解 Elasticsearch 的安…

向量数据库:PGVector

一、PGVector 介绍 PGVector 是一个基于 PostgreSQL 的扩展插件&#xff0c;为用户提供了一套强大的向量存储和查询的功能&#xff1a; 精确和近似最近邻搜索单精度&#xff08;Single-precision&#xff09;、半精度&#xff08;Half-precision&#xff09;、二进制&#xff…

鸿蒙内核源码分析(环境脚本篇) | 编译鸿蒙原来如此简单

很香的 Docker 如果只是为了编译鸿蒙,初级的接触鸿蒙,docker是很香的,从第一次接触docker就对它爱不释手, 脏活累活它干了,少了太多的麻烦. docker 编译鸿蒙看编译环境篇就行了, L1 和 L2 都编译通过了.如果要深入的了解鸿蒙,比如调试鸿蒙的代码或编译工具,就需要另辟蹊径了. …

PowerShell ⇒ Excel 批量创建Excel

New-Object -ComObject Excel.Application&#xff1a;创建Excel对象[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null 用来显式释放 Excel COM 对象的资源&#xff0c;以确保在脚本执行完成后&#xff0c;释放 Excel 进程和相关资源&#xff0…

Spring底层入门(八)

本篇对Spring MVC 的执行流程做一个简单总结 MVC执行流程总结 当浏览器发送一个请求&#xff0c;例如http://localhost:8080/hello&#xff0c;请求到达服务器后&#xff0c;一般会进行如下操作&#xff1a; 1、首先会经过DispatcherServlet&#xff0c;默认映射路径为 /&…

影视极品转场音效大全,经典获奖通用音效素材

一、素材描述 本套音效素材&#xff0c;大小15.02G&#xff0c;16个压缩文件。 二、素材目录 01-华纳兄弟电影音效库合辑&#xff08;2个压缩文件&#xff09; 02-影视极品转场音效&#xff08;2个压缩文件&#xff09; 03-好莱坞经典综合音效&#xff08;4个压缩文件&…

拼多多投产比怎么计算?

拼多多投产比&#xff08;ROI&#xff09;的计算公式为&#xff1a;ROI 成交金额 / 花费 100%。也可以简单理解为&#xff1a;ROI 点击量 * 转化率 * 客单价 / (点击量 * 平均点击花费)。 拼多多推广可以使用3an推客。3an推客&#xff08;CPS模式&#xff09;给商家提供的营…

鸿蒙开发接口Ability框架:【@ohos.application.StartOptions (StartOptions)】

StartOptions StartOptions模块对系统的基本通信组件进行查询和设置的能力。 说明&#xff1a; 本模块首批接口从API version 9 开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 本模块接口仅可在Stage模型下使用。 开发前请熟悉鸿蒙开发指导文档…

教练预约管理小程序开发源码现成案例(小程序、APP、H5圆源码搭建)

随着人们对身体健康越来越重视&#xff0c;对强身健体、健康个性化生活的需求日益增加&#xff0c;健身已成为时尚生活的标志。 然而&#xff0c;没有时间去健身房却成了很多上班族的痛点。健身房作为一项既能缓解工作压力又能缓解学业压力的运动&#xff0c;正好满足了当代人…

每周一算法:传递闭包

题目描述 不等式排序 给定 n n n个变量和 m m m个不等式。其中 n n n小于等于 26 26 26&#xff0c;变量分别用前 n n n 的大写英文字母表示。 不等式之间具有传递性&#xff0c;即若 A > B A>B A>B 且 B > C B>C B>C&#xff0c;则 A > C A>C …