我在以下路径安装了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');
但是还是不行。
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