IoT Platform mendukung MQTT over WebSocket. Anda dapat membuat koneksi WebSocket, lalu menggunakan protokol MQTT untuk berkomunikasi melalui channel tersebut.
Manfaat
WebSocket memberikan manfaat berikut:
-
Aplikasi berbasis browser dapat membuat koneksi MQTT persisten ke server, mirip dengan perangkat biasa.
-
WebSocket menggunakan Port 443, yang dapat melewati sebagian besar firewall.
Prosedur
-
Siapkan Sertifikat.
WebSocket mendukung dua protokol: ws (tidak terenkripsi) dan wss (terenkripsi TLS). Untuk koneksi wss, gunakan root certificate yang sama seperti pada koneksi TLS langsung.
-
Pilih client.
Anda dapat menggunakan ApsaraMQ for MQTT client dan mengganti URL koneksi. Untuk bahasa pemrograman lain, pilih dari Open-source MQTT clients. Pastikan client Anda mendukung WebSocket.
-
Hubungkan ke IoT Platform.
URL koneksi MQTT WebSocket menggunakan protokol dan Port yang berbeda dibandingkan koneksi TCP langsung. Parameter MQTT lainnya tetap sama. Atur
securemode=2untuk koneksi wss dansecuremode=3untuk koneksi ws.-
Endpoint:
wss://${MQTT_Endpoint}atauws://${MQTT_Endpoint}. Endpoint MQTT untuk instans publik dan Enterprise tercantum di Lihat dan konfigurasikan informasi endpoint instans (Endpoint). -
Port: 443.
-
Variable header: Keep Alive.
Pesan Connect harus menyertakan Keep Alive, yang menentukan interval keepalive dalam satuan detik. Rentang nilai yang valid: 30 hingga 1.200. IoT Platform akan menolak koneksi di luar rentang ini. Atur interval minimal 300 detik. Gunakan interval yang lebih panjang untuk jaringan yang tidak stabil.
Client harus mengirim setidaknya satu pesan, seperti permintaan PING, dalam setiap interval keepalive.
Jika IoT Platform tidak menerima pesan apa pun dari client dalam satu interval keepalive, koneksi client akan diputus. Client kemudian harus melakukan reconnect.
-
Parameter pesan MQTT Connect:
mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|" mqttUsername: deviceName+"&"+productKey mqttPassword: sign_hmac(deviceSecret,content)Keterangan:
- mqttClientId: Parameter tambahan ditempatkan di antara tanda vertikal (
| |). - clientId: ID client. Anda dapat menentukan ID client sesuai kebutuhan bisnis. Panjang ID client tidak boleh melebihi 64 karakter. Disarankan menggunakan alamat MAC atau nomor seri (SN) perangkat sebagai ID client.
-
securemode: Mode keamanan. Nilai yang valid adalah 2 (untuk protokol wss) dan 3 (untuk protokol ws).
- signmethod: Algoritma signature. Nilai yang valid: hmacmd5, hmacsha1, hmacsha256, dan sha256. Nilai default: hmacmd5.
- timestamp: Waktu saat ini, dalam milidetik. Parameter ini opsional.
- mqttPassword: Password. Metode perhitungan: Urutkan parameter yang dikirim ke server secara alfabetis, lalu enkripsi berdasarkan algoritma signature yang ditentukan. Untuk contoh perhitungan signature, lihat Contoh pembuatan signature untuk koneksi MQTT.
- content: String gabungan yang terdiri dari parameter yang dikirim ke server. Parameter tersebut mencakup productKey, deviceName, timestamp, dan clientId. Parameter diurutkan secara alfabetis dan digabung tanpa pembatas. Penting productKey dan deviceName wajib diisi. timestamp dan clientId bersifat opsional. Jika Anda mengonfigurasi parameter timestamp atau clientId, nilainya harus sama dengan nilai yang ditentukan pada parameter mqttClientId.
- mqttClientId: Parameter tambahan ditempatkan di antara tanda vertikal (
Gunakan SDK sisi perangkat untuk terhubung ke IoT Platform. Untuk integrasi kustom, contoh signature koneksi MQTT menyediakan detail implementasi.
-