我正在尝试将我的本地(Windows)MQTT mosquitto代理桥接到test.mosquitto.org。不幸的是,它引发了一个未知错误。
我使用的是此问题中使用的相同配置 callback hell
配置文件:
1489747961: mosquitto version 1.4.11 (build date 20/02/2017 23:24:29.40) starting
1489747961: Config loaded from Configurations/bridge.conf.
1489747961: Opening ipv6 listen socket on port 1883.
1489747961: Opening ipv4 listen socket on port 1883.
1489747961: Bridge local.NicolasJourdan.test doing local SUBSCRIBE on topic oust_topicst_topic
1489747961: Connecting bridge test (test.mosquitto.org:1883)
1489747961: Bridge NicolasJourdan.test sending CONNECT
1489747961: Error creating bridge: Unknown error.
1489747961: Warning: Unable to connect to bridge test.
1489747969: mosquitto version 1.4.11 terminating
输出:
{{1}}
什么可能产生此错误?我没有运行另一个mosquitto实例,test.mosquitto.org已经启动了
答案 0 :(得分:1)
在Windows上运行的Mosquitto似乎存在一个错误,阻止了桥接工作。
在Windows上,Mosquitto尝试连接之前,套接字尚未准备就绪。
请参见https://github.com/eclipse/mosquitto/issues/478和https://github.com/eclipse/mosquitto/issues/580。这描述了Windows上的潜在问题:
检查代码后,我发现bridge.c ....中的语句建立了无阻塞套接字连接。
...
所以下一个命令...有时会失败,因为尚未建立连接,因为前一个连接是非阻塞的。
答案 1 :(得分:0)
第一个问题是您是在运行本地代理还是仅作为客户端连接。
如果您正在运行代理,请尝试首先使用-c“path to config file运行mosquitto”以查看您的配置文件是否有错误。在终端中运行(Linux上的示例):
mosquitto -c /etc/mosquitto/mosquitto.conf
如果出现错误,控制台会显示错误并从那里取出。
接下来,尝试格式化这样的主题(称为主题重新映射): 主题测试0本地/本地/
现在,您可以从您的代码或终端发布到本地/测试,并且该消息将发布到远程代理上的本地/测试,该代理将通过挂起到同一主题来接收消息。