当前位置: 首页 > news >正文

mqtt客户端订阅一直重复连接?

文章

  • 前言
  • 错误场景
  • 问题分析
  • 解决方案
  • 后言

前言

✨✨ 他们是天生勇敢的开发者,我们创造bug,传播bug,毫不留情地消灭bug,在这个过程中我们创造了很多bug以供娱乐。
前端bug这里是博主总结的一些前端的bug以及解决方案,感兴趣可以看一下,有不同方案可以在评论区提出

在这里插入图片描述


正文开始

错误场景

一个mq客户端负责发布数据 代码如下:

// 连接到 MQTT 服务器
const url = "mqtt://127.0.0.1:1883";const options = {// 可以在这里添加额外的连接选项,比如 clientId 等clientId: "MQTT1",connectTimeout: 4000,reconnectPeriod: 1000,clean: true,username: "c37",password: "vi123456",
};
let mqttClient = mqtt.connect(url, options);
// 监听 MQTT 消息
mqttClient.on("connect", () => {console.log("MQTT Connected");
});
mqttClient.on("error", (err) => {console.error("MQTT client error:", err);
});// 确保在 Electron 应用关闭时清理 MQTT 客户端
app.on("window-all-closed", () => {if (process.platform !== "darwin") {app.quit();}if (mqttClient) {mqttClient.end();}
});app.on("quit", () => {if (mqttClient) {mqttClient.end();}
});const Index = 32;
const Value = 100;
const message = `Variable${Index}:${Value}`;mqttClient.publish("/MQTT1/pub", message, { qos: 1 }, (err) => {if (err) {console.error("Failed to publish message:", err);} else {console.log("Message sent successfully:", message);}
});

另外一个mq客户端负责订阅数据 代码如下:

async function connectAndSubscribe(mqttModule, variables) {try {const options = {clientId: "MQTT1",connectTimeout: 4000,reconnectPeriod: 1000,clean: true,username: "c37",password: "vi123456",};const mqttClient = mqttModule.connect('mqtt://127.0.0.1:1883', options);let isConnected = false; // 添加标志变量mqttClient.on('connect', function () {if (!isConnected) {isConnected = true;console.log('连接到 MQTT Broker 成功');mqttClient.subscribe('/MQTT1/pub', function (err) {if (!err) {console.log('已订阅 MQTT 主题 /MQTT1/pub');} else {console.error('订阅失败:', err);}});}});mqttClient.on('message', function (topic, message) {console.log(`接收到来自主题 ${topic} 的消息: ${message.toString()}`);const receivedMessage = message.toString();const parts = receivedMessage.split(':');if (parts.length === 2) {const variableName = parts[0];const value = parseFloat(parts[1]);if (variables[variableName] !== undefined) {variables[variableName].value = value;console.log(`已更新 ${variableName}${value}`);} else {console.log(`未知变量名称: ${variableName}`);}} else {console.log(`消息格式无效: ${receivedMessage}`);}});mqttClient.on('error', function (err) {console.error('MQTT 客户端错误:', err);});mqttClient.on('reconnect', function () {console.log('尝试重新连接到 MQTT Broker...');});mqttClient.on('offline', function () {console.log('MQTT 客户端离线');});} catch (err) {console.error("连接或订阅过程中发生错误:", err);}
}

问题分析

不报错 但是信息一直发送不过去 并且一直重连
原因:options中的clientId 重复了,mq允许一个用户在两个客户端登陆 代表我们用户名和密码可以一致,但是clientId不行
Client ID:每个 MQTT 客户端在连接到 Broker 时都需要提供一个唯一的 Client ID。如果多个客户端使用相同的 Client ID,则后一个连接将会替换掉前一个连接。这是 MQTT 协议的标准行为。

解决方案

options中的Client ID 不能重复 换成不一样的 可以搞一个随机数

后言

创作不易,要是本文章对广大读者有那么一点点帮助 不妨三连支持一下,您的鼓励就是博主创作的动力

相关文章:

mqtt客户端订阅一直重复连接?

文章 前言错误场景问题分析解决方案后言 前言 ✨✨ 他们是天生勇敢的开发者,我们创造bug,传播bug,毫不留情地消灭bug,在这个过程中我们创造了很多bug以供娱乐。 前端bug这里是博主总结的一些前端的bug以及解决方案,感兴…...

SegFormer: 一个基于Transformer的高效视觉图像分割算法

今天我分享一篇关于 Transformer 架构在图像视觉分割中的应用的文章,主题是 SegFormer。SegFormer 是一种新颖的语义分割方法,它结合了无位置编码的层次化 Transformer 编码器和轻量级 All-MLP 解码器,避免了传统方法中的复杂设计&#xff0c…...

SoC芯片中Clock Gen和Reset Gen的时钟树综合

社区目前已经开设了下面列举的前四大数字后端实战课程,均为直播课,且均是小编本人亲自授课!遇到项目问题,都可以远程一对一指导解决具体问题。小编本人是一线12年后端经验的数字后端工程师。想找一线IC后端技术专家亲自带你做后端…...

学习资料:电子标签拣货技术

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 完整版文件和更多学习资料,请球友到知识星球【智能仓储物流技术研习社】自行下载。 这份文件主要介绍了电子标签拣货技术&#xff0c…...

Git 提交规范参考

Git 提交规范参考 feat 增加新的业务功能fix 修复业务问题/BUGperf 优化性能style 更改代码风格, 不影响运行结果refactor 重构代码revert 撤销更改test 测试相关, 不涉及业务代码的更改docs 文档和注释相关chore 更新依赖/修改脚手架配置等琐事workflow 工作流改进ci 持续集成…...

【前端】Matter:物体的高级控制

在 Matter.js 中,除了简单的物体创建和碰撞检测外,还可以通过高级控制实现更复杂的物理交互与模拟效果。本教程将介绍如何使用 约束 (Constraint)、复合物体 (Composite) 以及如何进行 运动与旋转控制,来实现链条、摆钟等效果,以及…...

ASP.NET Core 路由规则 MapControllerRoute、MapDefaultControllerRoute、MapController

MapControllers 来映射属性路由控制器。 资料...

linux命令之less用法

less 分屏上下翻页浏览文件内容 补充说明 less命令 的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页&…...

试用cursor的简单的记录

快下班时又饿了,饿了几个小时了。中午那点饭,没够顶到下班。难怪店家说饭可以随便加。 所以不编码了,本周任务也超额完成了,这种状态再去编码调试,搞不好会写出自己不认识的代码。 本周工作中,新的事务是…...

下载Edge/Chrome浏览器主题的背景图片

当我们为Edge安装了心仪的主题后,希望把对应的背景图片下载保存要怎么做呢,以下图的“湖心小屋”主题为例。如下图,我们已经在应用商店中按照了该主题。 当打开新标签页后,可以欣赏这个主题内置的背景图片。 如果想要下载这个背景…...

Python解力扣算法题4(基础)

# 1.求斐波那契数列下标为n的数 &#xff08;从零开始&#xff09; # def fib(n): # if n < 2: # return n # # p, q, r 0, 0, 1 # for i in range(2, n 1): # p, q q, r # r p q # # return r#2. 和谐数组是指一个数组里元素…...

鸿蒙NEXT开发-网络管理(基于最新api12稳定版)

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...

【LeetCode每日一题】——1413.逐步求和得到正数的最小值

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 前缀和 二【题目难度】 简单 三【题目编号】 1413.逐步求和得到正数的最小值 四【题目描述】…...

音频分割:长语音音频 分割为 短语音音频 - python 实现

在做语音任务时&#xff0c;有是会用到的语音音频是长音频&#xff0c;这就需要我们将长音频分割为短音频。 该示例将声音的音量和静默时间结合作为语音的分割条件。 使用音量和静默时间结合的分割条件&#xff0c;能够比较好的进行自然断句&#xff0c;不会话语没有说完就切断…...

【Echarts动态排序图,series使用背景色更新动画,背景底色不同步跟随柱子动画】大家有没有解决方案

echarts动态排序图背景色动画不同步 echarts试一试 series下面添加了showBackground属性&#xff0c;动画时底色背景不同步跟随柱图 showBackground: true, backgroundStyle: {borderRadius: 9,color: RGB(255,199,91, 0.2) }const data []; for (let i 0; i < 5; i) {d…...

FLINK SQL 元数据持久化扩展

Flink SQL元数据持久化扩展是一个复杂但重要的过程&#xff0c;它允许Flink作业在重启或失败后能够恢复状态&#xff0c;从而确保数据处理的连续性和准确性。以下是对Flink SQL元数据持久化扩展的详细分析&#xff1a; 一、元数据持久化的重要性 在Flink中&#xff0c;元数据…...

MySQL【知识改变命运】04

复习&#xff1a; 1&#xff1a;CURD 1.1Create &#xff08;创建&#xff09; 语法&#xff1a; insert [into] 表名 [column[,column]] valuse(value_list)[,vaule_list]... value_list:value,[value]...创建一个实例表&#xff1a; 1.1.1单⾏数据全列插⼊ values_l…...

AD9680(adc直采芯片)使用说明

写这篇文章之前我是没有使用过AD9680的芯片&#xff0c;但是使用过GMS011芯片&#xff08;是国内24S&#xff09;下的公司出来的芯片&#xff0c;寄存器和管脚全对标。 在这里我就大概说一下芯片的说用方法 一、硬件设计 该芯片支持双通道射频直采 支持协议JESD204B 14位 采样…...

无人机之位置信息计算篇

一、主要导航技术 卫星导航 全球定位系统&#xff08;GPS&#xff09;&#xff1a;无人机上装有专门的接收器&#xff0c;用于捕获GPS系统发射的无线电信号。当无人机接收到来自至少四颗卫星的信号时&#xff0c;通过计算信号抵达时间的微小差异&#xff0c;即可运用三角定位…...

安卓cpu知识

背景 目前的cpu都是多核的&#xff0c;为了有更好的能效&#xff0c;每个核的频率从低往高不等。市面上&#xff0c;大家根据频率不同&#xff0c;都叫大小核。既然分了大小核&#xff0c;那么多核心&#xff0c;就要有不同的cpu调度策略。所以cpu上的所有核&#xff0c;又会根…...

WebSocket 命令行神器 wscat:5分钟快速上手 WebSocket 调试

WebSocket 命令行神器 wscat&#xff1a;5分钟快速上手 WebSocket 调试 【免费下载链接】wscat WebSocket cat 项目地址: https://gitcode.com/gh_mirrors/ws/wscat wscat 是一款轻量级的 WebSocket 命令行工具&#xff0c;能帮助开发者快速测试和调试 WebSocket 连接&a…...

discuz所有下载版本和升级工具,2.0版本

此文章仅作参考&#xff0c;已无效&#xff0c;移步到3.0版本 下载版本&#xff1a; &#xff01;&#xff01;&#xff01;升级UCenter和升级工具使用&#xff08;都在里面&#xff09;Discuz! X3.2 - X3.4 升级至 Discuz! X3.5 详细教程 - 程序发布 - Powered by Discuz! …...

moectf2025 rush

如此例题:利用随波逐流进行解题,将图片拖进去,在图片隐写中,找到GIF分离,将rush.gif分解为一张张独立的静态图片,并保存在新的文件夹中利用QR research进行扫描即可得出flag为moectf{QR_C0d3s_feATUR3_eRror_c0RRECt10N}...

LumiPixel Canvas Quest多模态探索:结合文本描述生成特定场景人像

LumiPixel Canvas Quest多模态探索&#xff1a;结合文本描述生成特定场景人像 1. 效果亮点预览 LumiPixel Canvas Quest在理解复杂文本描述并生成对应场景人像方面展现出惊人的能力。输入一段详细的场景描述&#xff0c;模型就能生成高度符合文本意境且细节丰富的图像。比如输…...

避坑指南:票务平台反爬机制破解与Selenium自动化测试最佳实践

票务平台反爬机制深度解析与Selenium合规测试实战 每次当你信心满满地部署好爬虫脚本&#xff0c;准备大展身手时&#xff0c;是不是总会被突如其来的验证码、IP封禁或是诡异的页面跳转搞得措手不及&#xff1f;作为经历过无数次"爬虫阵亡"的老兵&#xff0c;我深刻理…...

Magisk+EdXposed+抹机王 组合安装避坑指南:从环境配置到权限优化

1. 环境准备&#xff1a;搭建稳定的测试平台 第一次接触MagiskEdXposed抹机王组合的朋友&#xff0c;最容易在环境配置环节翻车。我见过太多人因为基础环境没搭好&#xff0c;导致后续步骤全盘崩溃的情况。这里分享一个经过20设备验证的稳定方案&#xff1a;Win10系统雷电模拟…...

掌握B站视频本地化:DownKyi下载工具全场景应用指南

掌握B站视频本地化&#xff1a;DownKyi下载工具全场景应用指南 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff…...

如何深度调试AMD Ryzen系统:SMUDebugTool完整指南与故障排除

如何深度调试AMD Ryzen系统&#xff1a;SMUDebugTool完整指南与故障排除 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...

OFA-VE效果集:天文星图与观测记录文本逻辑一致性AI核查

OFA-VE效果集&#xff1a;天文星图与观测记录文本逻辑一致性AI核查 1. 引言&#xff1a;当AI遇见星空 想象一下&#xff0c;你是一位天文爱好者&#xff0c;或者是一位科研工作者。你手头有一张刚刚拍摄的深空星图&#xff0c;旁边还附带着一段观测记录的文字描述。你可能会问…...

SEO_解读最新搜索引擎算法,调整你的SEO策略

SEO:解读最新搜索引擎算法&#xff0c;调整你的SEO策略 在当今数字营销的世界里&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;始终是提升网站流量和品牌知名度的关键。每当搜索引擎更新其算法&#xff0c;SEO策略就需要相应调整。今天我们将深入解读最新的搜索引擎算法…...