次の方法で共有


MessageWebSocket クラス

定義

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
継承
Object Platform::Object IInspectable MessageWebSocket
属性
実装

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)
アプリの機能
internetClient privateNetworkClientServer

注釈

MessageWebSocket クラスは、 WebSocket プロトコルのメッセージ ベースの抽象化を提供します。 MessageWebSocket を使用すると、WebSocket メッセージ全体が 1 回の操作で読み取りまたは書き込まれます。 これに対し、 StreamWebSocket では、メッセージ全体を 1 回の操作で読み取る必要はなく、各読み取り操作でメッセージのセクションを読み取ることができます。

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: protocol) への新しい MessageWebSocket 接続が検証されるときに発生します。 接続のカスタム サーバー検証を実装する場合は、このイベントを処理します。

適用対象

こちらもご覧ください