MessageWebSocket 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
WebSocket을 사용하여 전체 메시지를 읽고 쓸 수 있는 네트워크 통신을 지원합니다.
public ref class MessageWebSocket sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MessageWebSocket final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class MessageWebSocket final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class MessageWebSocket : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class MessageWebSocket : System.IDisposable
function MessageWebSocket()
Public NotInheritable Class MessageWebSocket
Implements IDisposable
- 상속
- 특성
- 구현
Windows 요구 사항
디바이스 패밀리 |
Windows 10 (10.0.10240.0에서 도입되었습니다.)
|
API contract |
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)
|
앱 기능 |
internetClient
privateNetworkClientServer
|
설명
MessageWebSocket 클래스는 WebSocket 프로토콜의 메시지 기반 추상화 기능을 제공합니다. MessageWebSocket을 사용하는 경우 전체 WebSocket 메시지는 단일 작업으로 읽거나 써집니다. 반면 StreamWebSocket 을 사용하면 단일 작업에서 전체 메시지를 읽도록 요구하는 대신 각 읽기 작업으로 메시지 섹션을 읽을 수 있습니다.
UTF-8 메시지의 경우 MessageWebSocket을 사용해야 합니다. StreamWebSocket 은 이진 메시지만 지원합니다.
예외 처리
MessageWebSocket 클래스에서 비동기 메서드를 호출할 때 예외를 처리하는 코드를 작성해야 합니다. 매개 변수 유효성 검사 오류, 이름 확인 오류 및 네트워크 오류로 인해 예외가 발생할 수 있습니다. 네트워크 오류(예: 연결 손실, 연결 오류 및 HTTP 서버 오류)의 예외는 언제든지 발생할 수 있습니다. 이러한 오류로 인해 예외가 발생합니다. 앱에서 처리하지 않으면 예외로 인해 전체 앱이 런타임에 의해 종료될 수 있습니다.
Windows.Networking.Sockets 네임스페이스에는 WebSocket을 사용할 때 오류를 처리하기 위한 편리한 도우미 메서드와 열거형이 있습니다. 특정 네트워크 예외를 앱에서 다르게 처리하는 데 유용합니다. 또한 앱은 매개 변수 유효성 검사 오류에 대한 예외의 HRESULT 를 사용하여 예외를 발생시킨 오류에 대한 자세한 정보를 알아볼 수 있습니다.
가능한 예외 및 예외를 처리하는 방법에 대한 자세한 내용은 네트워크 앱에서 예외 처리를 참조하세요.
Windows Server 2012에서 MessageWebSocket 사용
Windows Server 2012 및 Windows Server 2012 R2에서는 Media Foundation 기능을 사용하지 않는 한 Windows.Networking.Sockets 네임스페이스에서 대부분의 클래스를 구현하는Windows.Networking.dll로드되지 않습니다. 따라서 Media Foundation 기능을 사용하지 않도록 설정하면 Windows.Networking.Sockets 네임스페이스에서 MessageWebSocket 및 관련 WebSocket 클래스를 사용하는 앱이 실패합니다. Media Foundation 기능이 비활성화된 Windows Server 2012 또는 Windows Server 2012 R2가 설치됩니다.
Media Foundation 기능은 서버 관리자 사용하거나 명령 프롬프트 또는 스크립트에 다음 텍스트를 입력하여 Windows Server 2012 또는 Windows Server 2012 R2에서 사용하도록 설정할 수 있습니다.
dism /online /enable-feature /featurename:ServerMediaFoundation
Media Foundation 기능을 사용하도록 설정하면 사용자에게 다시 시작하라는 메시지가 표시됩니다. 컴퓨터를 다시 시작하면 Windows.Networking.Sockets 네임스페이스의 소켓 및 WebSocket에 대한 클래스가 예상대로 작동합니다.
버전 기록
Windows 버전 | SDK 버전 | 추가된 값 |
---|---|---|
1607 | 14393 | ServerCustomValidationRequested |
1803 | 17134 | SendFinalFrameAsync |
1803 | 17134 | SendNonfinalFrameAsync |
생성자
MessageWebSocket() |
새 MessageWebSocket 개체를 만듭니다. |
속성
Control |
MessageWebSocket 개체의 소켓 제어 데이터를 가져옵니다. |
Information |
MessageWebSocket 개체에 대한 소켓 정보를 가져옵니다. |
OutputStream |
MessageWebSocket 개체의 원격 네트워크 대상에 쓸 출력 스트림을 가져옵니다. |
메서드
Close() |
MessageWebSocket 개체를 닫고 빈 닫기 프레임을 서버에 보냅니다. |
Close(UInt16, String) |
MessageWebSocket 개체를 닫고 닫는 이유를 나타냅니다. |
ConnectAsync(Uri) |
MessageWebSocket 개체의 원격 네트워크 대상에 연결하는 비동기 작업을 시작합니다. |
Dispose() |
관리되지 않는 리소스의 확보, 해제 또는 다시 설정과 관련된 애플리케이션 정의 작업을 수행합니다. |
SendFinalFrameAsync(IBuffer) |
비동기(진행률 포함)는 WebSocket 메시지의 마지막 프레임이라는 의미 체계를 사용하여 순차 스트림에 데이터 프레임을 씁니다(이 프레임의 FIN 비트는 1로 설정됨). 이 메서드와 SendNonfinalFrameAsync 를 사용하면 개별 WebSocket 프레임을 보낼 수 있습니다. |
SendNonfinalFrameAsync(IBuffer) |
비동기(진행률 포함)는 동일한 WebSocket 메시지에 대해 더 많은 프레임이 따르는 의미 체계를 사용하여 순차 스트림에 데이터 프레임을 씁니다(이 프레임의 FIN 비트는 0으로 설정됨). 이 메서드와 SendFinalFrameAsync 를 사용하면 개별 WebSocket 프레임을 보낼 수 있습니다. |
SetRequestHeader(String, String) |
MessageWebSocket 개체의 WebSocket 프로토콜 핸드셰이크에 사용되는 HTTP 요청 메시지에 HTTP 요청 헤더를 추가합니다. |
이벤트
Closed |
닫기 핸드셰이크의 일부로 MessageWebSocket 개체에 닫기 프레임이 수신될 때 발생합니다. |
MessageReceived |
MessageWebSocket 개체에서 메시지가 수신되었음을 나타내는 이벤트입니다. |
ServerCustomValidationRequested |
보안 서버 URI(wss: 프로토콜)에 대한 새 MessageWebSocket 연결의 유효성을 검사할 때 발생합니다. 연결에 대한 사용자 지정 서버 유효성 검사를 구현하려는 경우 이 이벤트를 처리합니다. |