연결하기 전에 ClientWebSocket 프록시 설정
연결을 설정하기 전에 .NET WebSocket 프록시와 자격 증명을 구성하고, 대상 자격 증명과는 분리해 두십시오.
ConnectAsync를 호출하기 전에 ClientWebSocket 옵션을 구성하십시오. 연결을 먼저 시작하고 나중에 프록시를 할당하는 것은 그 핸드셰이크에 너무 늦습니다.
using var socket = new ClientWebSocket();
socket.Options.Proxy = new WebProxy("http://203.0.113.10:8080")
{
Credentials = new NetworkCredential(proxyUser, proxyPassword)
};
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
await socket.ConnectAsync(new Uri("wss://example.com/socket"),
deadline.Token);
주소와 계정 변수는 예시입니다. 필요한 네임스페이스에는 System.Net, System.Net.WebSockets, System.Threading이 포함됩니다. 배포 환경의 런타임, 플랫폼, 프록시 서비스가 지원하는 자격 증명 유형과 인증 메커니즘을 사용하십시오.
WebProxy 자격 증명은 프록시에 속합니다. ClientWebSocketOptions에는 WebSocket 서버 인증을 위한 별도의 Credentials 속성도 있습니다. 하나를 할당한다고 해서 다른 쪽이 자동으로 충족되지는 않습니다.
보안 WebSocket 연결에서 거부된 프록시 터널은 대상의 WebSocket 핸드셰이크가 아예 시작되지 않게 할 수 있습니다. 프록시 연결과 인증 증거를 대상의 HTTP upgrade 응답 및 이후 WebSocket 트래픽과 분리하십시오.
성공적인 연결은 세션의 시작일 뿐입니다. 애플리케이션 수명 동안 수신/전송 취소와 리소스 정리를 명시적으로 유지하십시오. 이 스케치의 설정 기한은 이후 모든 메시지에 대한 완전한 정책이 아닙니다.