尝试使用 Mqtt.js 通过 WebSockets 连接到 Mosquitto MQTT

Lar*_*ger 1 javascript websocket mqtt mosquitto

我想构建一个网页来发送和接收主题。我正在使用mosquittoMQTT.js

  1. 我使用它作为配置文件:
    protocol websockets
    listener 1884
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我跑sudo mosquitto -c /etc/mosquitto/mosquitto.conf并得到
    1647529861: mosquitto version 2.0.14 starting
    1647529861: Config loaded from /etc/mosquitto/mosquitto.conf.
    1647529861: Opening websockets listen socket on port 1884.
    1647529861: mosquitto version 2.0.14 running
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我正在使用一个简单的mqtt.html完整源代码):
    <script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
    <script>
    const client = mqtt.connect("ws://localhost:1884")
    </script>
    
    Run Code Online (Sandbox Code Playgroud)

问题:

  • 在 Chrome 中,它只是与 101 连接并一遍又一遍地执行。当您检查 websockets 消息时,“服务器”收到:00000000: 2002 0005。当我检查蚊子的日志时:我得到了很多1647530429: Client mqttjs_b0e54ea4 closed its connection.

我正在运行:

LSB Version:    n/a
Distributor ID: ManjaroLinux
Description:    Manjaro Linux
Release:    21.2.5
Codename:   Qonos
Run Code Online (Sandbox Code Playgroud)

har*_*llb 5

您需要添加allow_annonymous true到您的配置文件中。

mosquitto 2.x 的默认设置是不允许来自未经身份验证的客户端的连接。

您还应该颠倒配置中的行,

protocol选项仅适用于listener文件中按顺序排列的最后一个。

您所拥有的将 websocket 协议应用于端口 1883 上的默认侦听器。

allow_anonymous true
listener 1884
protocol websockets
Run Code Online (Sandbox Code Playgroud)