小程序连接MQTT服务器,以及配置,避坑

news2024/12/23 13:31:07

1、MQTT服务器域名配置

由于小程序必须使用域名方式连接socket,所以必须为MQTT服务器配置域名,并配置SSL证书。

1.1相关文档:

EMQX 企业版安装 | EMQX 企业版 4.4 文档

EMQX MQTT 微信小程序接入 | EMQX 4.2 文档

MQTT 下载引入和配置连接 | ESP32全栈应用开发文档 (icce.top)

1.2实现方法:

①宝塔面板新建网站:mqtt.yh***.com ,申请免费证书,然后配置SSL。

②网站配置修改,在配置文件中添加以下内容:

注意:端口选择8083/8084等,参考:配置说明 | EMQX 企业版 4.4 文档

 # 添加反向代理,重点!解决android无法连接mqtt问题
    location /mqtt {
      proxy_pass http://127.0.0.1:8083/mqtt;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      # client_max_body_size 35m;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";    
    }

2、小程序编写

引入mqtt.min.js文件,MQTT 下载引入和配置连接 | ESP32全栈应用开发文档 (icce.top)

<template>
	<view>
		<view class="btn-box status" style="width: 100%;">
			<u-button size="medium" :type="status==0?'default':'success'" @click="send" :loading="!linked">
			{{status==0?'运行设备':'暂停设备'}}</u-button>
		</view>
	</view>
</template>

<script>
	import mqtt from "../js/mqtt.min";
	let client = null; // MQTT服务
	export default {
		data() {
			return {
				loading:false,
				status:0,//设备状态,0关闭,1运行
				options: {
				      protocolVersion: 4, //MQTT连接协议版本
				      clientId: 'miniTest',
				      clean: false,
				      password: 'Ch199410',
				      username: 'taskone',
				      reconnectPeriod: 1000, //1000毫秒,两次重新连接之间的间隔
				      connectTimeout: 3 * 1000, //1000毫秒,两次重新连接之间的间隔
				      resubscribe: true //如果连接断开并重新连接,则会再次自动订阅已订阅的主题(默认true)
				},
				topic:"BlueLED",//发布主题
				linked:false,//是否连接
			}
		},
		onReady() {
			this.connectMqtt()
		},
		destroyed() {
			client?.end(true, error => {});
			client = null;
		},
		methods: {
			//连接mqtt服务器
			connectMqtt() {
			  let that = this;
			  client = mqtt.connect("wxs://mqtt.yh**.com/mqtt", this.options); // 连接方法
			  client.on("connect", error => {
			    console.log("连接成功");
			    // 可以在这里写一些连接成功的逻辑
				that.linked  = true
				that.bindSubscribe()
			  });
			  client.on("reconnect", error => {
			    console.log("正在重连:", error);
			    wx.showToast({ icon: "none", title: "正在重连", });
			  });
			  client.on("error", error => {
			    console.log("连接失败:", error);
			    wx.showToast({ icon: "none", title: "MQTT连接失败", });
			  });
			  client.on("message", (topic, message) => {
			    console.log(topic,message)
			  });
			},
			//订阅主题
			bindSubscribe(){
				// 订阅一个主题
				client.subscribe(this.topic, { qos: 0 }, function (err) {
				  if (!err) {
				    console.log("成功");
				    wx.showToast({ icon: "none", title: "添加成功" });
				    // 可以在这里写一些订阅主题成功的逻辑
				  }
				});
			},
			//发送消息
			pushMsg(msg){
				let that = this
				client.publish(this.topic, msg, { qos: 0 }, err => {
				  if (!err) {
					  that.status = that.status==0?1:0
				    console.log("topic:", "想要发送消息的Topic变量", "成功发出消息", msg);
				  }
				});
			},
			send(){
				this.pushMsg(this.status==0?'on':'off')
			}
		}
	}
</script>

<style lang="less" scoped>
.btn-box{
	width: 100%;
	text-align: center;
	padding:50rpx 0;
}
</style>

运行显示MQTT连接成功: 

3、小程序连接MQTT问题

真机运行可能会遇到问题,小程序连接MQTT问题和方法。

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

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

相关文章

【图像去噪】论文精读:Multi-level Wavelet-CNN for Image Restoration(MWCNN)

请先看【专栏介绍文章】&#xff1a;【图像去噪&#xff08;Image Denoising&#xff09;】关于【图像去噪】专栏的相关说明&#xff0c;包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总&#xff08;更新中…

Spring入门之IOC(包含实例代码)

目录 什么是Spring&#xff1f;什么是Spring IOC&#xff1f;如何创建一个Spring IOC项目&#xff1f;1. 导入Maven项目依赖2. 准备一个实体类&#xff08;先定义接口再实现&#xff09;3. 准备配置文件4. 在Test类中测试 IOC中的Bean管理实例化Bean的三种方式 什么是Spring&am…

微信中如何搜索附近的人

我们 微信 下面选择 发现 然后 点卷 附件 进入后 头上的页签 切换成 附件的人 在列表中点击后即可添加附件的人啦

鸿蒙启动框架配置文件(StartUpTask)

{"startupTasks": [//有哪些任务{"name": "StartupTask_001",//任务名字"srcEntry": "./ets/startup/StartupTask_001.ets",//任务的文件路径"runOnThread": "taskpool",//运行在哪个现成&#xff0c;有…

泰克TDP1000差分探头Tektronix TDP0500参数资料

泰克Tektronix TDP0500 TDP1000 高压差分探头 ​Tektronix TDP1000 高压差分探头是一款多功能且易于使用的探头&#xff0c;可提供开关电源、CAN/LIN 总线和高速数字系统设计所需的高速电气和机械性能。Tektronix TDP1000 探头专为与 TekVPI 探头接口或 TekProbe BNC 接口配…

Java:路径计算与障碍物处理

Java 实现寻找字符串数组中的最长公共前缀及不同路径数量计算&#xff08;含障碍物&#xff09; 在计算机科学和软件开发中&#xff0c;经常需要解决一些基本但实用的问题。本文将介绍两种常见问题的解决方案&#xff1a;一是从一组字符串中找出最长公共前缀&#xff1b;二是计…

能力驱动的企业战略转型:基于能力规划的战略转型与数字化实践全指南

在当今数字化和全球化加速发展的时代&#xff0c;企业面临着复杂的市场环境和迅速变化的客户需求。为了在竞争中脱颖而出&#xff0c;企业必须不仅制定卓越的战略&#xff0c;还需确保这些战略能够有效地转化为实际行动。基于能力规划&#xff08;Capability-Based Planning, C…

Lua 代码编码规范

lua代码格式 vscode stylua 插件 配置文件stylua.toml column_width 240 line_endings “Unix” indent_type “Spaces” --使用空格 很重要&#xff0c;保证不同编辑器打开是一样的 indent_width 4 quote_style “AutoPreferDouble” --字符串引号样式双引号 call_paren…

海康二次开发学习笔记9-通讯触发及模块列表获取

通讯触发及模块列表获取 模块列表获取 获取流程中所有模块的模块名,添加下拉框用于显示模块名 1. 处理Combox2的DropDown事件 /// <summary>/// 模块列表获取/// </summary>/// <param name"sender"></param>/// <param name"e&q…

MCU官方IDE软件安装及学习教程集合 — STM32CubeIDE(STM32)

简介 各MCU厂商为保证产品的市场地位以及用户体验&#xff0c;不断的完善自己的产品配套&#xff0c;搭建自己的开发生态&#xff0c;像国外ST公司&#xff0c;国内的GD&#xff08;兆易创新&#xff09;&#xff0c;AT&#xff08;雅特力&#xff09;等等。目前就开发生态而言…

测试.net core服务项目调用dotNetify-Pulse监控性能的基本用法

微信公众号“DotNet讲堂”的文章《开源 .NET API 实时监控项目》介绍了开源实时日志及性能监控项目dotNetify-Pulse&#xff0c;在项目中引用简单&#xff0c;既能用其自带的监控页面&#xff0c;也支持按需配置监控页面。本文在之前创建的环境检测项目中添加并测试dotNetify-P…

逆向工程核心原理 Chapter20 | “内嵌补丁”练习

前言 自己学《逆向工程核心原理》一书的记录&#xff0c;只记录自己觉得重要/有用的一些点。 知识点学习 很实用的一个逆向技术。 原理&#xff1a; “壳”的逻辑也是这样的。EP处先解密OEP代码&#xff0c;再跳转到洞穴代码&#xff0c;恢复IAT之类的&#xff0c;然后跳回…

免费分享-MATLAB代码融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型

融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型 通过融合正余弦和柯西变异改进麻雀搜索算法&#xff0c;对CNN-BiLSTM的学习率、正则化参数以及BiLSTM隐含层神经元个数等进行优化 预测效果图如下 代码如下&#xff1a; %% 清空环境变量 wa…

Vue(七) TodoList案例1.0

文章目录 组件化编码流程(通用)1. 拆分静态组件2. 初始化列表展示动态数据如何让一个标签动态的拥有某一个属性 3. 按回车添加todo子组件给父组件传值之props 4. 勾选与取消勾选一个Todo5. 删除6. footer底部统计7. footer底部交互7.1 全选框自动打勾7.2 全选框取消勾选 8. 清除…

【java】vscode配置javaweb开发环境

下载jdk https://www.oracle.com/java/technologies/downloads/?er221886下载完毕直接安装&#xff0c;安装完毕自动添加以下环境变量 在cmd中运行 java -version出现以下代表成功 再添加系统变量 下载Maven https://maven.apache.org/download.cgi下载完解压放到自己方…

win10环境下gvim离线配置插件的一些补充

0 总述 在上一篇博客&#xff0c;即《Windows系统下使用gvim配置LaTeX快速书写环境》一文中&#xff0c;本小白试图模仿神级人物Gilles Castel&#xff0c;打造vim下的 LaTeX \LaTeX LATE​X书写环境。实话实说&#xff0c;东施效颦了。虽不至于一无所得&#xff0c;但也仅仅算…

STM32通过ADM3222完成UART转232通信电平转换

1、简介 单片机默认串口输出电平是UART信号,但是在实际项目中经常需要将其转换成232电平,此时就需要ADM3222芯片来完成电平的转换,下面对使用过程进行总结。 2、硬件电路 从上图中可以看到芯片需要对1、18进行配置才能进行工作,通过查阅手册可知,1引脚需要配置低电平,…

生物信息学:DNA序列的构成

DNA序列是由一串字母表示的真实的或者假设的携带基因信息的DNA分子的一级结构。‌ DNA序列的构成基于四种特定的碱基&#xff0c;分别是腺嘌呤&#xff08;A&#xff09;、胸腺嘧啶&#xff08;T&#xff09;、鸟嘌呤&#xff08;G&#xff09;和胞嘧啶&#xff08;C&#xff…

【机器学习】K近邻(K-Nearest Neighbors,简称KNN)的基本概念以及消极方法和积极方法的区别

引言 K近邻&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;算法是一种基础的机器学习方法&#xff0c;属于监督学习范畴 文章目录 引言一、K近邻&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;1.1 原理详述1.1.1 距离度量1.1.2 选择k值1.1.…

django网吧收费管理系统 项目源码26819

摘 要 随着互联网的普及&#xff0c;网吧作为公共互联网接入场所&#xff0c;依旧在许多地区发挥着重要作用。现代网吧不仅仅是提供上网服务的场所&#xff0c;还包括了游戏、社交、休闲等多功能体验。为了提高网吧的服务质量和运营效率&#xff0c;迫切需要一个高效的管理系统…