11

我想通过 mosquitto 库使用 MQTT 协议。

首先,我想做一些安装 mosquitto-clients 的测试

 sudo apt-get install mosquitto-clients

该程序提供了两种“方法”:

  • mosquitto_pub
  • mosquitto_sub

按照说明,我正在尝试提交新主题:

mosquitto_sub -d -t newtopic/test

使用默认主机/端口 [localhost/1883]。

我得到:

Error: Connection refused

错误太笼统了..有人可以帮助我吗?
可能是防火墙问题?在这种情况下,我如何检查这是否是问题所在?

我正在使用 linux ubuntu ( 3.8.0-42-generic #62~precise1-Ubuntu)

nb使用 libmosquitto 编写自定义程序的相同行为。

4

8 回答 8

14

mosquitto_pub/sub 的默认主机:端口组合是 localhost:1883。如果您的本地计算机上没有运行代理,那么它当然无法连接。

解决方案是在本地计算机上运行代理,或者告诉实用程序连接的位置。例如:

mosquitto_sub -t newtopic/test -h test.mosquitto.org
于 2014-07-03T14:30:18.013 回答
10

其他答案都不适合我。就我而言,我已从 mosquitto 1.X 升级到 mosquitto 2.0,这需要将新配置添加到您的mosquitto.conf

listener 1883

用于连接本地主机以外的客户端(即通过 Docker)

于 2021-03-15T21:54:39.827 回答
8

对于未来的谷歌人:

您可以使用上面提到的公共主机,但是要启动本地mosquitto 代理,首先要确保您已经安装mosquittomosquitto_sub. 然后,您只需运行以下命令即可启动 mosquitto 代理:

mosquitto
于 2018-03-12T06:01:32.603 回答
3

我遇到了同样的问题,对我来说是在升级mosquittomqtt v5 支持:

$ mosquitto --version
mosquitto version 2.0.14
mosquitto is an MQTT v5.0/v3.1.1/v3.1 broker.

但是,升级后的代理不再支持匿名连接:

$ mosquitto_pub -t mytopic -m "Hello World"
Connection error: Connection Refused: not authorised.
Error: The connection was refused.

这可能是一个更好的默认设置,但在试验时不太友好。将代理配置为允许匿名连接:

$ cat /etc/mosquitto/conf.d/standard.conf
listener 1883
protocol mqtt
allow_anonymous true

$ sudo systemctl restart mosquitto.service

然后,嘿presto:

$ mosquitto_pub -t mytopic -m "Hello World"
于 2021-12-30T07:16:46.193 回答
2

发生这种情况是因为您在系统上只安装了 mosquitto 客户端,而没有在系统上安装 mosquitto。请执行以下命令安装 MQTT Broker。

sudo apt-get install mosquitto

来源: 连接尝试失败 bytesofgigabytes.com

于 2019-08-26T12:26:40.680 回答
2

只需编辑 Mosquitto 配置文件 ( /etc/mosquitto/conf.d/mosquitto.conf) 添加这些行...
allow_anonymous true
listener 1883 0.0.0.0

...并重新启动 Mosquitto(作为服务与否)。
$ sudo service mosquitto restart
或者
$ mosquitto --verbose --config-file /etc/mosquitto/conf.d/mosquitto.conf

正如这里所告知的,因为 v.1.7allow_anonymous默认为 false。检查日志消息 ( ) 也很有用/var/log/mosquitto/mosquitto.log

--host最后,使用( -h) 参数和主机 IP 地址(get if from ifconfigor ip -color addrcommand)运行 Mosquitto 订阅者/发布者。

于 2022-01-29T02:04:25.577 回答
1

确保您的 mosquitto 服务已安装并正确运行。

安装:sudo apt-get install mosquitto

安装后: sudo service mosquitto stop,sudo service mosquitto start

于 2020-09-03T19:15:14.303 回答
1

我为我的经纪人设置了用户名和密码。因此在使用 mosquitto sub 时必须使用它:

mosquitto_sub -u username -P password -t newtopic/test -h test.mosquitto.org
于 2021-11-18T06:01:51.797 回答