带 Websocket 的 Mosquitto 2.0.14

Uma*_*yal 1 amazon-ec2 websocket mqtt mosquitto

我有一个在 Windows Server 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
Run Code Online (Sandbox Code Playgroud)

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

这是我运行 mosquitto 经纪人的时候

9001端口被蚊子占用

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

编辑:
我尝试使用 MQTTX、MQTT Explorer 和 MQTTBox Chrome 应用程序进行连接。

Bri*_*its 6

根据评论,这个问题之前已经注意到(在这个答案中),但是我认为值得在这里重复一下,以帮助遇到该问题的其他人。

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

有一个解决方法 -在egsocket_domain ipv4下添加listener

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
Run Code Online (Sandbox Code Playgroud)

请参阅github 存储库中的此问题以获取更多信息。