2015-12-10 3 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, клиент не подключается. Я также пробовал использовать другие пакеты JS с поддержкой MQTT. Я предпочитаю 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 над веб-окнами, поэтому вам нужно будет также изменить номер порта для кода на основе браузера на порт Websocket, указанный в вашей панели CloudMQTT.

+0

Порт веб-портов - 31212. Однако на панели мониторинга CloudMQTT говорится: «Порт веб-портов (только для TLS)». Я использую NodeJS локально, есть ли способ, которым я мог бы сделать эту работу? – jerome2710

+0

Это действительно сработало, мне удалось создать самозаверяющий сертификат SSL в MAMP, и это привело к тому, что websockets CloudMQTT работают. Благодаря! – jerome2710

Смежные вопросы