Mosquitto 2.0.14 与 Websockets

Mosquitto 2.0.14 with Websockets

我在 Windows 服务器 2019 中有一个 Mosquitto 2.0.14 代理 运行。我可以使用启用了 SSL 的 mqtts 协议通过端口 8883 连接到它。我也可以在没有 SSL 的情况下通过端口 1883 连接到它。
现在我想使用 Websockets 进行连接。所以我添加了一个监听器:

listener 9001
protocol websockets
allow_anonymous false
password_file C:\mosquitto\password.txt
http_dir C:\mosquitto\http_dir
set_tcp_nodelay true

我也尝试过不使用 http_dirset_tcp_nodelay。我试过使用和不使用 SSL 证书。
我在 windows 防火墙以及 AWS EC2 实例安全组中打开了端口 9001。

但是当我尝试使用 ws://broker.mysite.com:9001ws://broker.mysite.com:9001/mqtt 连接到代理时,没有任何反应。没有错误,没有连接。 Mosquitto 不显示任何日志,即使我可以看到使用 WireShark 传入的请求。我真的被困在这里了。请帮帮我。

编辑:
我尝试使用 MQTTX、MQTT Explorer 和 MQTTBox Chrome App.

进行连接

根据之前的评论(在 中),此问题已被注意到,但我认为值得在此重复以帮助遇到此问题的其他人。

简而言之 - Windows 上的 Mosquitto 版本 2.0.12、2.0.13 和 2.0.14 运行 在侦听 websocket 连接时似乎存在错误。虽然代理似乎正在侦听(在正确的端口上),但实际上它不接受连接(并且没有记录任何内容)。我没有详细调查,但原因可能与套接字的配置方式有关。

有一个解决方法 - 在 listener 下添加 socket_domain ipv4 例如

listener 9001
protocol websockets
allow_anonymous false
password_file C:\mosquitto\password.txt
http_dir C:\mosquitto\http_dir
set_tcp_nodelay true
socket_domain ipv4

有关详细信息,请参阅 github 存储库中的 this issue