Azure IoT Python:通过代理配置基于 WebSockets 的 MQTT
配置 Azure IoT Python 客户端支持的代理选项,并有意识地选择基于 WebSockets 的 MQTT。
在已经使用 Azure IoT Python SDK 的应用中,请把 MQTT 传输方式与其代理选项一起选择。下面的配置选择基于 WebSockets 的 MQTT:
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
)
这些类来自 SDK 有文档记录的接口。请通过应用的机密配置提供设备连接字符串,并替换示例中的代理端点。对于可公开访问、且允许公共中间人的 IoT Hub 端点,HTTP 代理列表可提供 HTTP 主机与端口的候选;请确认该服务允许通往目标的路径。这些都是 SDK 的显式选项;浏览器中可用的代理或操作系统的通用设置并不能建立设备客户端的路由。
请查看所选代理类型的 ProxyOptions 参考文档。它区分 HTTP、SOCKS4 和 SOCKS5 字段,并说明各类型特有的用户名/密码行为,包括 HTTP 的限制。某个字段存在,并不保证支持所有身份验证机制。
代理账户与设备身份授权的阶段不同。被拒绝的中间人交换可能在代理服务器评估设备凭据之前就中断连接。选择 WebSockets 也使代理的目的地与访问限制继续生效。
请记录所选的传输方式、目的地以及第一个失败的阶段。SDK 客户端、代理实现与允许的路径必须一致;一次成功的浏览器请求,或“SOCKS 承载所有协议”这类笼统说法,都无法提供这种兼容性。