无法通过批处理文件订阅或发布到我的本地 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的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 websockets 在本地 RSK 节点上订阅“newBlockHeaders”?