2015-12-10 102 views
1

我努力使我的MQTT客户端在我的应用程序内工作。经纪人由CloudMQTT提供。MQTT JavaScript客户端没有连接(错误的协议?)

当试图在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不起作用。

+0

我不确定您对PAHO客户端的多个订阅意味着什么。您可以使用PAHO客户端订阅多个主题 – hardillb

回答

1

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

+0

websockets端口为31212.但是,CloudMQTT仪表板显示为“Websockets端口(仅限TLS)”。我在本地使用NodeJS,有没有办法让这个工作? – jerome2710

+0

这实际上确实起作用,我设法在MAMP中创建了一个自签名SSL证书,并且这使CloudMQTT的websockets正常工作。谢谢! – jerome2710

相关问题