이미 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의 제한을 포함하여 유형별 사용자 이름/비밀번호 동작을 문서화합니다. 필드의 존재가 모든 인증 메커니즘을 보장하지는 않습니다.

프록시 계정과 디바이스 ID는 서로 다른 단계를 승인합니다. 거부된 중개자 교환은 브로커가 디바이스 자격 증명을 평가하기 전에 연결을 중단시킬 수 있습니다. WebSockets를 선택해도 프록시의 대상 및 접근 제한은 계속 적용됩니다.

선택한 전송, 대상, 처음 실패한 단계를 기록하십시오. SDK 클라이언트, 프록시 구현, 허용된 경로가 일치해야 합니다. 성공한 브라우저 요청도, SOCKS가 모든 프로토콜을 전달한다는 일반적인 주장도 그 호환성을 제공하지 않습니다.

관련 글