고급 WebSocket 컨트롤을 사용하는 방법(HTML)
[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]
이 항목에서는 Windows 런타임 앱에서 MessageWebSocket 및 StreamWebSocket 기능을 사용할 경우 고급 소켓 컨트롤을 사용하는 방법을 설명합니다.
알아야 할 사항
기술
-
소켓 및 WebSocket을 사용하여 네트워크 통신을 할 수 있게 합니다.
사전 요구 사항
- 이 항목의 예제는 JavaScript로 제공됩니다. WebSocket을 기본적으로 이해하고 있는 것이 좋습니다.
고급 WebSocket 컨트롤 개요
MessageWebSocket 및 StreamWebSocket 클래스는 고급 컨트롤 사용에 대한 동일한 모델을 따릅니다. 위 기본 클래스에는 각각 고급 컨트롤에 액세스할 수 있는 관련 클래스가 있습니다.
- MessageWebSocketControl - MessageWebSocket 개체에 대한 서비스 품질의 소켓 컨트롤을 제공합니다.
- StreamWebSocketControl - StreamWebSocket 개체에 대한 소켓 컨트롤 데이터를 제공합니다.
고급 컨트롤을 사용하는 기본 모델은 두 가지 유형의 WebSocket에 대해 모두 동일합니다. 아래 설명에서는 StreamWebSocket을 예제로 사용하지만 MessageWebSocket에도 동일한 프로세스를 사용할 수 있습니다.
- StreamWebSocket을 만듭니다.
- StreamWebSocket.Control 속성을 사용하여 StreamWebSocket 개체와 연결된 StreamWebSocketControl 인스턴스를 가져옵니다.
- StreamWebSocketControl에서 고급 소켓 옵션을 설정하는 속성을 설정합니다.
연결 작업을 실행하기 전에 앱은 항상 StreamWebSocketControl에서 속성을 설정해야 합니다. 따라서 소켓이 생성된 후에 바로 고급 옵션을 설정하는 것이 좋습니다. 소켓이 ConnectAsync 메서드를 호출한 후에 StreamWebSocketControl 속성을 설정하려고 하지 마세요.
고급 StreamWebSocket 컨트롤
StreamWebSocket에 대한 고급 옵션에는 여러 가지가 있습니다.
- StreamWebSocketControl.NoDelay - StreamWebSocket 개체에서 Nagle 알고리즘을 사용할지 여부를 나타냅니다.
- StreamWebSocketControl.OutboundBufferSizeInBytes - StreamWebSocket 개체에서 데이터를 보내는 데 사용할 보내기 버퍼의 크기(바이트)를 제어합니다.
- StreamWebSocketControl.ProxyCredential - StreamWebSocket 개체를 사용하여 HTTP 헤더 인증을 통해 프록시 서버에 인증하는 데 사용할 자격 증명을 제공합니다.
- StreamWebSocketControl.ServerCredential - StreamWebSocket 개체를 사용하여 HTTP 헤더 인증을 통해 WebSocket 서버에 인증하는 데 사용할 자격 증명을 제공합니다.
- StreamWebSocketControl.SupportedProtocols - 연결 핸드셰이크 중 서버에 광고할 지원되는 하위 프로토콜 목록을 추가하는 데 사용할 수 있는 컬렉션을 가져옵니다.
한 예로 StreamWebSocketControl.NoDelay 옵션을 자세히 살펴보겠습니다. StreamWebSocket을 만들 때 기본 설정은 이 옵션을 true로 설정하는 것입니다. 이 경우 Nagle 알고리즘이 사용하지 않도록 설정됩니다. 그러나 여러 개의 작은 패킷을 보내는 앱에 StreamWebSocket을 사용하며 대기 시간이 문제가 되지 않을 경우 네트워크 트래픽을 줄이려면 StreamWebSocketControl.NoDelay를 false로 설정하여 Nagle 알고리즘을 사용할 수 있습니다.
다음 예제에서는 StreamWebSocket을 만들고 StreamWebSocketControl.NoDelay를 false로 설정합니다. 이 작업이 완료되면 앱에서 StreamWebSocket을 연결할 수 있습니다.
var clientWebSocket = new Windows.Networking.Sockets.StreamWebSocket();
// Get the current setting for this option
// This isn't required, but it shows how to get the current setting
var currentSetting = clientWebSocket.control.noDelay;
// Set noDelay to false so that the Nagle algorithm isn't disabled
clientWebSocket.control.noDelay = false;
// Now you can call the ConnectAsync method to connect the StreamWebSocket.
고급 MessageWebSocket 컨트롤
MessageWebSocket의 고급 옵션은 대부분 StreamWebSocket의 고급 옵션과 동일하지만 일부 차이점이 있습니다.
- MessageWebSocketControl.MaxMessageSize - MessageWebSocket 개체에서 구성할 WebSocket 메시지의 최대 메시지 크기(바이트)를 제어합니다.
- MessageWebSocketControl.MessageType - MessageWebSocket 개체에서 구성할 WebSocket 메시지 유형(이진 또는 UTF-8)을 제어합니다.
- MessageWebSocketControl.OutboundBufferSizeInBytes - MessageWebSocket 개체에서 데이터를 보내는 데 사용할 보내기 버퍼의 크기(바이트)를 제어합니다.
- MessageWebSocketControl.ProxyCredential - MessageWebSocket 개체를 사용하여 HTTP 헤더 인증을 통해 프록시 서버에 인증하는 데 사용할 자격 증명을 제공합니다.
- MessageWebSocketControl.ServerCredential - MessageWebSocket 개체를 사용하여 HTTP 헤더 인증을 통해 WebSocket 서버에 인증하는 데 사용할 자격 증명을 제공합니다.
- MessageWebSocketControl.SupportedProtocols - 연결 핸드셰이크 중 서버에 광고할 지원되는 하위 프로토콜 목록을 추가하는 데 사용할 수 있는 컬렉션을 가져옵니다.
MessageWebSocket에 대한 옵션을 설정하는 방식은 위 예제에서와 같습니다.
설명
컨트롤 데이터 외에 유사한 관련 클래스 집합에서 이러한 기본 클래스의 추가 정보에 대한 액세스를 제공합니다.
- MessageWebSocketInformation - MessageWebSocket 개체에 대한 소켓 정보를 제공합니다.
- StreamWebSocketInformation - StreamWebSocket 개체에 대한 소켓 정보를 제공합니다.
이러한 클래스에는 소켓에 대한 추가 정보를 제공하는 속성이 있습니다.
관련 항목
기타
MessageWebSocket을 사용하여 연결하는 방법
TLS/SSL을 통해 WebSocket 연결의 보안을 유지하는 방법
참조
샘플