IoT Platform prend en charge MQTT sur WebSocket. Établissez une connexion WebSocket, puis utilisez le protocole MQTT pour communiquer via ce canal.
Avantages
WebSocket offre les avantages suivants :
Les applications basées sur un navigateur peuvent établir des connexions MQTT persistantes avec le serveur, à l'instar des appareils classiques.
WebSocket utilise le port 443, qui traverse la plupart des pare-feu.
Procédure
-
Préparez un certificat.
WebSocket prend en charge deux protocoles : ws (non chiffré) et wss (chiffré TLS). Pour les connexions wss, utilisez le même certificat racine que pour les connexions TLS directes.
-
Sélectionnez un client.
Utilisez le client ApsaraMQ for MQTT et remplacez l'URL de connexion. Pour les autres langages, choisissez parmi les clients MQTT open source. Vérifiez que votre client prend en charge WebSocket.
-
Connectez-vous à IoT Platform.
L'URL de connexion MQTT WebSocket utilise un protocole et un port différents d'une connexion TCP directe. Les autres paramètres MQTT restent identiques. Définissez
securemode=2pour les connexions wss etsecuremode=3pour les connexions ws.Endpoint :
wss://${MQTT_Endpoint}ouws://${MQTT_Endpoint}. Les endpoints MQTT des instances publiques et Enterprise sont répertoriés dans Afficher et configurer les informations d'endpoint de l'instance (Endpoint).Port : 443.
-
En-tête variable : Keep Alive.
Le message Connect doit inclure Keep Alive, qui spécifie l'intervalle de maintien de la connexion en secondes. Plage valide : 30 à 1200. IoT Platform rejette les connexions en dehors de cette plage. Définissez l'intervalle sur 300 secondes ou plus. Utilisez un intervalle plus long pour les réseaux instables.
Le client doit envoyer au moins un message, tel qu'une requête PING, dans chaque intervalle de maintien de la connexion.
Si IoT Platform ne reçoit aucun message du client durant un intervalle de maintien de la connexion, il déconnecte le client. Le client doit alors se reconnecter.
-
Paramètres du message MQTT Connect :
mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|" mqttUsername: deviceName+"&"+productKey mqttPassword: sign_hmac(deviceSecret,content)Où :
mqttClientId : Les paramètres étendus sont placés entre des barres verticales (
| |).clientId : ID du client. Spécifiez un ID de client en fonction de vos besoins métier. L'ID de client ne peut pas dépasser 64 caractères. Nous vous recommandons d'utiliser l'adresse MAC ou le numéro de série (SN) de l'appareil comme ID de client.
securemode : Mode de sécurité. Les valeurs valides sont 2 (pour le protocole wss) et 3 (pour le protocole ws).
signmethod : Algorithme de signature. Valeurs valides : hmacmd5, hmacsha1, hmacsha256 et sha256. Valeur par défaut : hmacmd5.
timestamp : Heure actuelle, en millisecondes. Ce paramètre est facultatif.
mqttPassword : Mot de passe. Méthode de calcul : Triez les paramètres soumis au serveur par ordre alphabétique et chiffrez-les selon l'algorithme de signature spécifié. Pour plus d'informations sur l'exemple de calcul de signature, consultez la section Exemples de création de signatures pour les connexions MQTT.
-
content : Chaîne concaténée composée des paramètres soumis au serveur. Ces paramètres incluent productKey, deviceName, timestamp et clientId. Les paramètres sont triés par ordre alphabétique et concaténés sans délimiteur.
ImportantproductKey
et
deviceName
sont obligatoires.
timestamp
et
clientId
sont facultatifs. Si vous configurez le paramètre
timestamp
ou
clientId
, la valeur du paramètre doit être identique à celle spécifiée pour le paramètre
mqttClientId
.
Utilisez un SDK côté appareil pour vous connecter à IoT Platform. Pour les intégrations personnalisées, l'exemple de signature de connexion MQTT fournit les détails d'implémentation.