物聯網平台支援基於WebSocket的MQTT協議。您可以首先使用WebSocket建立串連,然後在WebSocket通道上使用MQTT協議進行通訊,即MQTT over WebSocket。
背景資訊
使用WebSocket方式主要有以下優勢:- 使基於瀏覽器的應用程式可以像普通裝置一樣,具備與服務端建立MQTT長串連的能力。
- WebSocket方式使用443連接埠,訊息可以順利穿過大多數防火牆。
操作步驟
- 準備認證。
WebSocket可以使用ws和wss兩種方式,ws是普通的WebSocket串連,wss是增加了TLS加密。如果使用wss方式進行安全連線,需要使用和TLS直連相同的根憑證。
- 選擇用戶端。
- 串連說明。
使用WebSocket方式進行串連,區別主要在MQTT串連URL的協議和連接埠號碼,MQTT串連參數和TCP直接連接方式完全相同,其中要注意securemode參數,使用wss方式串連時,配置
securemode=2
,使用ws方式串連時,配置securemode=3
。- 接入網域名稱:格式為
wss://${MQTT接入地址}
或ws://${MQTT接入地址}
。公用執行個體和企業版執行個體中裝置的MQTT接入地址資訊,請參見查看和配置執行個體終端節點資訊(Endpoint)。 - 連接埠:443。
- 可變前序(variable header):Keep Alive。
Connect指令中需包含Keep Alive(保活時間)。保活心跳時間取值範圍為30至1200秒。如果心跳時間不在此區間內,物聯網平台會拒絕串連。建議取值300秒以上。如果網路不穩定,將心跳時間設定高一些。
裝置端在保活時間間隔內,至少需要發送一次報文,包括PING請求。
如果物聯網平台在保活時間內無法收到任何報文,物聯網平台會中斷連線,裝置端需要進行重連。
- MQTT的Connect報文參數如下:
mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|" mqttUsername: deviceName+"&"+productKey mqttPassword: sign_hmac(deviceSecret,content)
其中:- securemode:表示目前安全模式,可選值有2(wss協議)和3(ws協議)。
建議您使用裝置端SDK接入物聯網平台。如果您自行開發接入,請參見MQTT串連簽名樣本。
- 接入網域名稱:格式為