我无法将 MQTT.js 节点包与 CDN 一起使用

问题描述 投票:0回答:1

我在以下路径安装了mosquitto:

C:\Program Files\mosquitto

然后我使用以下命令启动它:

mosquitto.exe

然后我在“test.html”文件上编写了以下代码。

<script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
<script>
    const client = mqtt.connect('ws://localhost');
    const topic = `mytopic`;
    client.on('connect', function () {
      console.log('Connected to broker MQTT');
      client.subscribe(topic, function (err) {
        if (!err) {
            console.log(`Subscription success`);
        } else {
            console.log(`Subscription failure: ${err}`);
        }
      });
    });
    client.on('message', function (topic, message) {
        console.log(topic, message.toString());
    });
</script>

这是我得到的错误

WebSocket connection to 'ws://localhost/' failed

附注

在我的“mosquitto.conf”文件中,我添加了以下几行:

listener 8080
protocol websockets

所有其他行均已注释。然后我就换了

const client = mqtt.connect('ws://localhost');

const client = mqtt.connect('ws://localhost:8080');

但是还是不行。

javascript node.js mqtt cdn
1个回答
0
投票

Mosquitto 在命令行启动时默认不加载任何配置文件(Windows 上的 mosquitto 服务会从默认安装目录加载一个

mosquitto.conf
文件)。

例如运行

mosquitto
不会加载任何配置文件,只会侦听本地主机和端口 1883。它也不允许任何匿名用户连接。

要使用配置文件,您必须使用

-c
选项在命令行上传递它。

例如

mosquitto -c mosquitto.conf
(假设
mosquitto.conf
位于您运行命令的同一目录中)。

要运行支持 websocket 的代理并允许匿名用户连接,您必须在配置文件中包含以下内容

# allow anonymous users
allow_anonymous true

# start the default listener
listener 1883

# start the websocket listener
listener 8080
protocol websockets
© www.soinside.com 2019 - 2024. All rights reserved.