目的
Important
Windowsでの WebSocket API の選択 - 複数の WebSocket オプションがあります。 アプリケーションの種類に基づいて選択します。
| API | 最適な用途 | メモ |
|---|---|---|
| WinHTTP WebSocket (WinHttpWebSocketSend など) | WinHTTP 経由の WebSocket を必要とするサービス、サーバー側コード、C/C++ アプリ | WinHTTP プロキシ/認証と統合されます。には Windows 8+ が必要です。 Win32 サービス シナリオに推奨されます。 |
| Windows。Networking.Sockets (MessageWebSocket、StreamWebSocket) | UWP アプリ、最新の C++/WinRT デスクトップ アプリ | 最上位レベルの API。では、フレーミングと TLS が処理されます。 アプリは、独自の再接続ロジックを実装する必要があります。 新しいデスクトップ/UWP アプリに推奨されます。 |
| WebSocket プロトコル コンポーネント (この API — websocket.dll) | プロトコル フレーミング/解析のみを必要とするカスタム トランスポート実装 | 低レベル: I/O、HTTP アップグレード、認証、またはプロキシは処理 しません 。 独自のトランスポート (通常は生の Winsock + TLS) を指定する必要があります。 |
| システム.Net。WebSocket (.NET) | .NET アプリケーション | マネージド、非同期優先、クロスプラットフォーム。 クライアントに ClientWebSocket を使用します。 |
| サード パーティ製ライブラリ (libwebsocket、Boost.Beast など) | クロスプラットフォーム C/C++ | Windows固有ではありません。複数のプラットフォームを対象とする場合に便利です。 |
ほとんどのアプリケーションでは、WinHTTP WebSocket (サービス/Win32) またはWindows。Networking.Sockets (最新のアプリ) が正しい選択です。 低レベルの WebSocket プロトコル コンポーネント API は、完全に制御するトランスポート上でカスタム フレーミングが必要な場合にのみ使用します。
WebSocket プロトコル コンポーネント API を使用すると、既存のネットワーク中継局間で動作する HTTP 経由の非同期双方向通信チャネルが可能になります。 WebSocket プロトコル コンポーネント API では、クライアントは HTTP を使用してサーバーと通信し、その後、HTTP がレイヤー化された基になるプロトコル (TCP や SSL など) の使用に両側が切り替わります。 目標は、最初に HTTP を使用してネットワーク中継局を経由し、次に確立されたエンドツーエンドの基になる TCP/SSL チャネルを使用して双方向のアプリケーション通信を行う方法です。 WebSocket プロトコル [WSPROTO] は IETF で定義され、関連する Javascript API (WebSocket) は WHATWG で定義されます。
このセクションでは、次の操作を行います。
| 話題 | 形容 |
|---|---|
|
WebSocket プロトコル コンポーネント API データ型 |
WebSocket プロトコル コンポーネント API は、これらのデータ型を定義します。 |
|
WebSocket プロトコル コンポーネント API 列挙型 |
WebSocket プロトコル コンポーネント API は、これらの列挙型を定義します。 |
|
WebSocket プロトコル コンポーネント API 関数 |
WebSocket プロトコル コンポーネント API は、これらの関数を定義します。 |
|
WebSocket プロトコル コンポーネント API 構造体 |
WebSocket プロトコル コンポーネント API は、これらの構造体を定義します。 |
開発者対象ユーザー
WebSocket プロトコル コンポーネント API は、C/C++ プログラマが使用するように設計されています。 HTTP と Windows のネットワークに関する知識が必要です。
手記
Windows で WebSocket プロトコルを使用するには、Windows HTTP Services (WinHTTP) API または Windows.Networking.Sockets 名前空間を使用することをお勧めします。
実行時の要件
WebSocket プロトコル コンポーネント API には、Windows 8 以降のバージョンの Windows オペレーティング システムが必要です。 API は、websocket.dllを介して動的にリンクできます。
手記
websocket.dll は、クライアントとサーバーのハンドシェイクに関連する HTTP ヘッダーのサポートを提供し、受信したハンドシェイク データを検証し、WebSocket データ ストリームを解析します。 HTTP 固有の操作 (リダイレクト、認証、プロキシのサポート) を処理したり、I/O 操作 (WebSocket ストリーム バイトの送受信) を実行したりすることはありません。