无法通过批处理文件订阅或发布到我的本地 mosquitto

Posted

技术标签:

【中文标题】无法通过批处理文件订阅或发布到我的本地 mosquitto【英文标题】:can't subscribe or publish to my local mosquitto via a batch file 【发布时间】:2021-10-12 15:23:42 【问题描述】:

我想通过批处理文件自动设置我的 MQTT 代理,但是批处理文件中的这段代码没有做任何事情。

###发布代码#######

@ECHO OFF
cd "C:\program files\mosquitto"
mosquitto_pub -t 'test/topic' -m 'helloWorld'
PAUSE

####订阅代码##################

@ECHO OFF
cd "C:\program files\mosquitto"
mosquitto_sub -t topic/test
PAUSE

注意:如果我在 cmd 中使用这些命令,它可以工作

【问题讨论】:

“它什么也没做”告诉我很少。脚本是否说发布成功?你有错误吗?对 Mosquitto 一无所知,我的第一个想法是它缺少一些环境变量。 @SomethingDark cmd 很清晰,没有任何内容用于子提示和“按任意键”进行发布 @SomethingDark 如果是 cmd,我首先必须导航到 mosquitto 文件夹,然后输入命令 mosquitto_sub -t topic/test。同样仅用于发布,使用不同的命令 直单引号只是 cmd.exe/batch 文件中的普通字符,所以如果要使用引号,则应该使用直双引号。同样cd "C:\program files\mosquitto",仅更改目录,如果当前驱动器已经是C:,因此您应该始终使用cd /d,而不是CD /D "%ProgramFiles%\mosquitto"。重要的是要提到批处理文件基本上只是将每一行输入到 cmd.exe,就像您自己直接输入它一样,(唯一真正的区别是批处理文件中的独立 % 字符需要加倍). @Compo MQTT 主题使用/ 作为分隔符,这与文件路径或权限无关。 【参考方案1】:

首先,您的主题不匹配,您发布到test/topic 并订阅topic/test

其次,对于匹配的主题,订阅批处理文件需要在发布实例之前启动。这是因为您没有使用固定的客户端 ID、高 QOS 并确保订阅会话是在将 clean 标志设置为 false 的情况下启动的。因此代理不会为未连接的客户端排队任何消息。

【讨论】:

以上是关于无法通过批处理文件订阅或发布到我的本地 mosquitto的主要内容,如果未能解决你的问题,请参考以下文章

openfire自动订阅接受

支付后的电子商务会员订阅

如何通过 websockets 在本地 RSK 节点上订阅“newBlockHeaders”?

如何在几天后将 Paypal IPN 添加到我的网站以获取订阅状态

为啥我无法访问本地 XAMPP 上的某些页面或目录?

通过 Rest Api 订阅 Microsoft Graph Api Webhook 不再有效