我正在努力让我的MQTT客户端在我的应用程序中运行。经纪人由CloudMQTT提供。
尝试在NodeJS中运行以下代码时,客户端正确连接到MQTT;
var mqtt = require('mqtt');
var client = mqtt.connect(
"mqtt://m20.cloudmqtt.com",
{
port: 11212,
username: "XXXXXXXX",
password: "XXXXXXXX"
}
);
client.on('connect', function () {
console.log('connected');
});
但是,当我使用the Bower package在前端运行相同的代码(当然没有要求)时,客户端无法连接。我也尝试了其他MQTT browserfied JS包。我更喜欢MQTT.js而不是Paho,因为我想对一个连接的客户端使用多个订阅。
如果console.log(client);
,NodeJS使用protocol: 'mqtt'
和protocolId: 'MQTT'
。前端使用protocol: 'ws'
和protocolId: 'MQTT'
。这可能是问题吗?将这些选项添加到mqtt.connect无效。
答案 0 :(得分:1)
在浏览器中,唯一的选择是通过Websockets通过MQTT进行连接。 CloudMQTT通过websockets为本机MQTT和MQTT使用不同的端口号,因此您还需要将基于浏览器的代码的端口号更改为CloudMQTT仪表板中列出的Websocket端口。