2015-12-10 90 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

相關問題