客户端上的 MQTT 套接字错误 <未知>

新手上路,请多包涵

我在 Raspberry Pi 上设置了 MQTT 并为代理配置了 Arduino Uno,但我在 /var/log/mosquitto/mosquitto.log 文件中看到以下条目:

 New connection from 192.168.10.114 on port 1883.
Socket error on client <unknown>, disconnecting.

Pi 设置了 ETH0 连接到我的本地 LAN,IP 地址为 192.168.1.50

Pi 上还有一个 WiFi AP 设置。 Arduino Uno 通过 WiFi 连接以发送/接收 MQTT 消息。 WiFi AP 的 IP 地址为 192.168.10.1,并通过 dnsmasq 提供 DHCP 租约。

我尝试在本地 MQTT 代理服务器(Pi)上发布和订阅测试并得到相同的错误:

 Command:
mosquitto_sub -h 192.168.10.1 -t topic

mosquitto.log:
New connection from 192.168.10.1 on port 1883.
New client connected from 192.168.10.1 as mosqsub/1837-raspberryp (cl, k60).
Socket error on client <unknown>, disconnecting.

这是/etc/mosquitto/mosquitto.conf:

 pid_file /var/run/mosquitto.pid

persistence true
log_dest file /var/log/mosquitto/mosquitto.log

allow_anonymous true

include_dir /etc/mosquitto/conf.d

sudo service mosquitto stop sudo service mosquitto start:

 mosquitto version 1.4.8 terminating
mosquitto version 1.4.8 (build date Sun, 14 Feb 2016 15:06:55 +0000) starting
Config loaded from /etc/mosquitto/mosquitto.conf.
Opening ipv4 listen socket on port 1883.
Opening ipv6 listen socket on port 1883.

我的接口配置可能存在问题。这是/etc/network/interfaces:

 source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.10.1
    netmask 255.255.255.0

谁能指出我在 MQTT 上的套接字错误来自哪里?

原文由 rwkiii 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
1 个回答

我来到这个线程是因为我面临同样的错误。经过更多故障排除后,它与身份验证配置有关 - 客户端(Arduino)试图匿名连接(没有密码),而代理(Pi)设置为仅允许经过身份验证的连接(MQTT 配置中的 allow_anonymous false )。

将正确的密码添加到 Arduino 连接代码为我解决了这个问题。

原文由 Bogd 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题