订阅者未收到来自客户端的消息

物联网 MQTT 蚊子
2021-05-31 12:59:44

我的 Mosquitto 服务器整个 ACL 文件内容:

pattern write s1/%c
pattern read s1/%c

我知道应该有可能有单行:

pattern readwrite s1/%c

但我的服务器抱怨错误:

Empty invalid topic access type in acl_file.

我想两条线应该像readwrite一条线一样如果我错了,请纠正我。

我确实s1/ss从客户订阅ss

mosquitto_sub -h 192.168.1.8 -t s1/ss --cafile ca.crt -p 8883 -d -u b -P b -i ss

我确实从客户端发布ss

mosquitto_pub -h 192.168.1.8 -t s1/ss --cafile ca.crt -m "test" -p 8883 -d -u b -P b -i ss

根据 Mosquitto 日志服务器通知它对发布感到满意,但订阅者未收到消息。更糟糕的是,根据日志同时它重新订阅服务器。

1577902083: New connection from 192.168.1.222 on port 8883.
1577902083: Client ss already connected, closing old connection.
1577902083: New client connected from 192.168.1.222 as ss (c1, k60, ub).
1577902083: Sending CONNACK to ss (0)
1577902083: Received PUBLISH from ss (d0, q0, r0, m0, 's1/ss', ... (4 bytes))
1577902083: Received DISCONNECT from ss
1577902084: New connection from 192.168.1.222 on port 8883.
1577902084: New client connected from 192.168.1.222 as ss (c1, k60, ub).
1577902084: Sending CONNACK to ss (0)
1577902084: Received SUBSCRIBE from ss
1577902084:     s1/ss (QoS 0)
1577902084: ss 0 s1/ss
1577902084: Sending SUBACK to ss

为什么我的订阅者没有收到消息?我的 ACL 线路是否正确?

1个回答

您不能同时连接 2 个具有相同客户端 ID 的客户端。

您已经-i ss为发布者和订阅者硬编码了相同的客户端 ID

由于您首先启动订阅者,一旦发布者连接它就会被踢出代理,因此当发布者实际发布消息时它不会连接,因此不会看到它。

这与ACL无关