在 mqtt.js 中发布无法访问的主题时如何捕获“访问错误”?

2024-02-09

我正在使用带有 mqtt.js 的 node.js 和 mosquitto 代理创建一个项目。 在 mosquitto 配置文件中,我设置了 pwfile、aclfile 来控制哪个用户可以访问哪个主题。

如果用户名、密码、发布主题和订阅主题正确,则一切正常。

但是,如果我将发布主题更改为无法访问的主题,似乎成功发布了主题,mqtt.js 中没有任何错误,但消息从未发布。

发布或订阅无法访问的主题时是否有捕获错误的方法?

https://github.com/mqttjs/MQTT.js/blob/master/README.md#publish https://github.com/mqttjs/MQTT.js/blob/master/README.md#publish

我尝试使用 qos=1 捕获回调函数中的错误,但 mosquitto 代理似乎没有任何错误地确认客户端。 当然,消息没有发布到该主题,因为该客户端没有该主题的访问权限。

client.publish('inaccessible_topic', 'hello world', {qos: 1}, (err) => {
  if (err) console.log('error occur: ', err);
  else console.log('message successfully publish');
});

我预计 mosquitto 会返回某种错误(error occur: <error message>)当发布到无法访问的主题时,但它没有(message sucessfully publish).

我想知道是否有可能捕获这样的错误。 mosquitto 是否处理此类错误,如果是,如何使用 mqtt.js 捕获此类错误?


你不知道。

代理不会告诉客户端它是否尝试发布到它无权访问的主题,它只会默默地删除消息。

这将是一个安全漏洞,因为它会暴露可用的主题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 mqtt.js 中发布无法访问的主题时如何捕获“访问错误”? 的相关文章

随机推荐

  • Numpy 中的 Sigmoid 函数

    为了快速计算 我必须在 Numpy 中实现我的 sigmoid 函数 这是下面的代码 def sigmoid Z Implements the sigmoid activation in bumpy Arguments Z numpy ar
  • PHPExcel setAutoSize 用于合并单元格

    没有合并的代码 objPHPExcel new PHPExcel sheet objPHPExcel gt getActiveSheet sheet gt setCellValueByColumnAndRow 0 1 test test t
  • 如何将 StyleCop 4.7 与 Visual Studio 2013 集成?

    我真的很想在 Visual Studio 2013 中使用 StyleCop 但不幸的是它不起作用 我已经安装了 4 7 版本官方网站 http stylecop codeplex com 检查所有选项 包括 VS Studio 集成和 M
  • Safari 扩展上的应用程序传输安全

    我的应用程序扩展需要打开许多网站的 URL 我这样做 for NSExtensionItem item in self extensionContext inputItems for NSItemProvider itemProvider
  • 如何在C中释放二维数组?

    我有以下代码 int ptr int malloc sizeof int N for int i 0 i
  • Django:更新页面而不重新加载

    我想更新我的主页 html使用按钮操作并显示来自服务器的一些结果 但问题是 当我单击按钮时 整个页面都会重新加载 在这里 我的项目名称是 T2KG 我的表单标签如下所示
  • 如何实现Memcached与数据库同步

    AFAIK Memcached 不支持与数据库同步 至少是 SQL Server 和 Oracle 我们计划将 Memcached 免费 与我们的 OLTP 数据库结合使用 在某些业务流程中 我们进行一些繁重的验证 这需要从数据库中获取大量
  • C# HttpClient.SendAsync 等待抛出 NullReferenceException

    首先 我正在尝试为产品构建一个插件 因此环境不是我的 而且我对正在发生的事情没有太多了解 据我所知 系统正在运行 NET Framework 4 6 2 并且我已尝试确保所有依赖项都与系统上的依赖项相匹配 我看到的问题是 当我发出await
  • 如何融化 pandas 数据框?

    On the pandas questions tagged pandas标签 我经常看到用户询问有关在 pandas 中融化数据框的问题 我将尝试针对这个主题进行规范的问答 自我回答 我要澄清一下 什么是熔化 如何使用熔体 什么时候使用熔
  • 如何在 Rust 中使用单一方法创建文件及其父目录?

    我可以打开一个文件来创建它及其父目录吗OpenOptions或者类似的单一方法 这只会创建一个新文件 如果我的路径包含不存在的目录 它将不起作用 pub fn save file file path String gt Result lt
  • 如何在文本字段中模拟退格操作?

    当按下按钮时 我只想在常规文本框中模拟 退格 删除光标左侧的字符 谷歌和各种论坛正在就此产生非常随机的结果 执行此操作的正确方法是什么 这似乎在 Safari 中有效 也可能在 Firefox 中有效 但我还没有在 IE 中测试过它 fun
  • 获取当前系统时间?

    使用 Objective C 获取当前时间 HH MM SS 的最佳方法是什么 我想我应该看看 NSDate 和 NSDateFormatter 我快速浏览了一下文档 它看起来比我预期的要复杂一些 所以我想我应该在这里检查一下以确保我走在正
  • 是否可以将构建时间插入到应用程序中?

    A game has this 我很好奇这是否是实际的构建时间 果然 文件上次修改 日期Crysis exe 该程序 是03 31 2009 01 40 当然 开发人员可以轻松地手动输入该值 并在一分钟内构建应用程序 但我很好奇当应用程序实
  • 画布图像直到第二次尝试才​​显示

    我正在尝试使用该元素绘制静态 Google 地图图像 一旦用户单击提交按钮 该图像就会出现在屏幕上 html 看起来像这样
  • AWS SNS 通过 Cognito 身份 ID 发布给特定用户

    我在这里尝试做的是 当特定用户属于新添加的 DynamoDB 项目的一部分时 通过 SNS 和 APNS 发送通知 我想将其发送给用户 Cognito 身份 ID 而不是设备令牌 因此 在添加项目时应该触发 Lambda 然后检查 Cogn
  • iPython Notebook Markdown 单元中的语法突出显示

    有没有办法让 iPython Notebooks 中的 Markdown 单元格突出显示代码块中的语法 例如 在GitHub中 可以通过以下方式获得所需的效果 python gt gt gt print hello The GitHub 上
  • ASP.NET - 如何使用 C# 显示 javascript 警报?

    我有一个包含文本框和按钮的页面 当用户单击提交按钮时 我想显示基于布尔值的消息 我研究过 stackoverflow 并尝试了这个问题中的代码 Asp net Webform 显示警报和重定向 https stackoverflow com
  • validateImageData 参数和 Image.FromStream()

    我担心这个重载中的第三个参数 validateImageData 文档没有对此进行太多解释 它只说明它会导致图像数据被验证 但没有详细信息 到底是做什么来验证图像数据的 public static Image FromStream Stre
  • 如何在 Google App Engine 数据存储中插入批量数据?

    我有一些城市 州和国家的 CSV 文件及其 ID 名称等 我想将所有这些数据放入 Google 应用程序引擎数据存储中 有人可以建议一种在开发服务器和生产服务器上执行此操作的有效方法吗 提前致谢 你很幸运 您描述的功能已融入 appcfg
  • 在 mqtt.js 中发布无法访问的主题时如何捕获“访问错误”?

    我正在使用带有 mqtt js 的 node js 和 mosquitto 代理创建一个项目 在 mosquitto 配置文件中 我设置了 pwfile aclfile 来控制哪个用户可以访问哪个主题 如果用户名 密码 发布主题和订阅主题正