MQTT JavaScript 客户端未连接(协议错误?)

MQTT JavaScript client not connecting (wrong protocol?)

我非常努力地让我的 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 浏览器化 JS 包。我更喜欢 MQTT.js 而不是 Paho,因为我想在一个连接的客户端上使用多个订阅。

如果console.log(client);,NodeJS使用protocol: 'mqtt'protocolId: 'MQTT'。前端使用 protocol: 'ws'protocolId: 'MQTT'。这可能是问题所在吗?将这些选项添加到 mqtt.connect 没有任何效果。

在浏览器中,唯一的选择是通过 Websockets 上的 MQTT 进行连接。 CloudMQTT 对本机 MQTT 和 MQTT over websockets 使用不同的端口号,因此您还需要将基于浏览器的代码的端口号更改为 CloudMQTT 仪表板中列出的 Websocket 端口。