Azure IoT Python : configurer MQTT sur WebSockets via un proxy
Configurez les options de proxy prises en charge par le client Azure IoT Python et choisissez MQTT sur WebSockets en connaissance de cause.
Dans une application qui utilise déjà le SDK Azure IoT Python, choisissez le transport MQTT et ses options de proxy ensemble. Cette configuration sélectionne MQTT sur WebSockets :
proxy = ProxyOptions(proxy_type='HTTP',
proxy_addr='203.0.113.10', proxy_port=8080)
client = IoTHubDeviceClient.create_from_connection_string(
connection_string, websockets=True, proxy_options=proxy
)
Les classes proviennent de l'interface documentée du SDK. Fournissez la chaîne de connexion de l'appareil via la configuration secrète de l'application et remplacez le point de terminaison de proxy de l'exemple. Pour un point de terminaison IoT Hub accessible publiquement où des intermédiaires publics sont autorisés, la liste de proxys HTTP propose des candidats pour l'hôte et le port HTTP ; confirmez que le service autorise la route vers la destination. Ce sont des options explicites du SDK ; un proxy fonctionnel dans le navigateur ou un réglage générique du système d'exploitation n'établit pas la route du client de l'appareil.
Consultez la référence ProxyOptions pour le type de proxy retenu. Elle distingue les champs HTTP, SOCKS4 et SOCKS5 et documente le comportement nom d'utilisateur/mot de passe propre à chaque type, y compris les limitations pour HTTP. La présence d'un champ ne garantit pas tous les mécanismes d'authentification.
Le compte de proxy et l'identité de l'appareil autorisent des étapes différentes. Un échange d'intermédiaire rejeté peut interrompre la connexion avant que le broker n'évalue les informations d'identification de l'appareil. Choisir WebSockets laisse également en vigueur les restrictions de destination et d'accès du proxy.
Consignez le transport choisi, la destination et la première étape en échec. Le client du SDK, l'implémentation du proxy et la route autorisée doivent concorder ; ni une requête de navigateur réussie ni l'affirmation générale selon laquelle SOCKS transporte tous les protocoles ne fournissent cette compatibilité.