2017-08-20 21 views
0

下面的代碼在使用時效果很好node client_test.js。但是,當我把這個reactjs我得到這個錯誤:爲什麼Reactjs mqtt客戶端url返回wss?

(unknown) WebSocket connection to 'wss://dev.xxx.com:8083/' failed: Error in connection establishment: net::ERR_INSECURE_RESPONSE

這個URL總是轉換爲wss協議。我不知道爲什麼會發生這種情況。

var mqtt = require('mqtt') 

var options = { 
    //port: 8083, 
    //host: 'dev.xxx.com', 
    clientId: 'mqttjs_' + Math.random().toString(16).substr(2, 8), 
    username: 'xxx', 
    password: new Buffer('xxx'), 
    keepalive: 10, 
    reconnectPeriod: 1000, 
    protocolId: 'MQIsdp', 
    protocolVersion: 3, 
    clean: true, 
    encoding: 'utf8', 
    //protocol: 'mqtts', 
    rejectUnauthorized : false,  
    will: { 
    topic: 'node/status', 
    payload: new Buffer('offline') 
    } 
}; 

var client = mqtt.connect('mqtts://dev.xxx.com:8083', options) 

client.on('connect', function() { 
    client.subscribe('presence') 
    client.publish('presence', 'Hello mqtt') 
}) 

client.on('message', function (topic, message) { 
    // message is Buffer 
    console.log(message.toString()) 
}) 

回答

0

由於ReactJS在瀏覽器中運行,瀏覽器沙箱只允許它做WS(S)連接的不是本地MQTT所需的原始套接字連接。

的MQTT庫的URL自動轉換成一個可以嘗試,並在瀏覽器(即安全WebSocket連接)使用

你需要確保你的經紀人支持安全的WebSockets連接,如果你想使用它與ReactJS

+0

謝謝,@hardillb有用的答案 –