【问题标题】:MQTT JavaScript client not connecting (wrong protocol?)MQTT JavaScript 客户端未连接(错误的协议?)
【发布时间】:2015-12-10 13:36:16
【问题描述】:

我正在努力让我的 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 没有任何效果。

【问题讨论】:

  • 我不确定您对 PAHO 客户端的多次订阅是什么意思。您可以使用 PAHO 客户端订阅多个主题

标签: javascript node.js bower mqtt


【解决方案1】:

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

【讨论】:

  • websockets 端口是 31212。​​但是,CloudMQTT 仪表板显示“Websockets 端口(仅限 TLS)”。我在本地使用 NodeJS,有什么方法可以让这个工作吗?
  • 这确实有效,我设法在 MAMP 中创建了一个自签名 SSL 证书,这让 CloudMQTT 的 websockets 正常工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
  • 1970-01-01
  • 2017-02-04
  • 2016-05-17
  • 1970-01-01
  • 2021-09-22
  • 1970-01-01
相关资源
最近更新 更多