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

发布于 2025-01-15 08:15:53 字数 1179 浏览 1 评论 0原文

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

  1. 我使用它作为配置文件:
    协议 websocket
    听众 1884
    
  2. 我运行 sudo mosquitto -c /etc/mosquitto/mosquitto.conf 并得到
    1647529861:mosquitto 版本 2.0.14 开始
    1647529861:从 /etc/mosquitto/mosquitto.conf 加载配置。
    1647529861:在端口 1884 上打开 websockets 侦听套接字。
    1647529861:mosquitto 版本 2.0.14 正在运行
    
  3. 我正在使用一个简单的 mqtt.html完整源代码):
    ;
    <脚本>
    const client = mqtt.connect("ws://localhost:1884")
    
    

问题:

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

我正在运行:

LSB Version:    n/a
Distributor ID: ManjaroLinux
Description:    Manjaro Linux
Release:    21.2.5
Codename:   Qonos

I want to build a web page to send and receive topics. I'm using mosquitto and MQTT.js.

  1. I'm using this as an config file:
    protocol websockets
    listener 1884
    
  2. I run sudo mosquitto -c /etc/mosquitto/mosquitto.conf and get
    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
    
  3. I'm using a simple mqtt.html (full source):
    <script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
    <script>
    const client = mqtt.connect("ws://localhost:1884")
    </script>
    

Problem:

  • In Chrome it just connects with 101 and does it again and again. When you check the websockets messages, the "server" receives: 00000000: 2002 0005. When I check the log of mosquitto: I get a lot of 1647530429: Client mqttjs_b0e54ea4 closed its connection.

I'm running on:

LSB Version:    n/a
Distributor ID: ManjaroLinux
Description:    Manjaro Linux
Release:    21.2.5
Codename:   Qonos

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感性 2025-01-22 08:15:53

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

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

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

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

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

allow_anonymous true
listener 1884
protocol websockets

You need to add allow_annonymous true to your config file.

The default for mosquitto 2.x is to not allow connections from unauthenticated clients.

You should also reverse the lines in your config,

The protocol option only applies to the last listener in order down the file.

What you have will apply the websocket protocol to the default listener on port 1883.

allow_anonymous true
listener 1884
protocol websockets
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文