WebSocket の詳細制御の方法 (HTML)

[この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、 「最新のドキュメント」をご覧ください]

このトピックでは、MessageWebSocketStreamWebSocket の機能を Windows ランタイム アプリで使うときのソケットの詳細制御の使い方について説明します。

理解しておく必要があること

テクノロジ

必要条件

  • このトピックのコード例は、JavaScript で記述されています。WebSocket についての基本的な理解があることが条件となります。

WebSocket の詳細制御の概要

MessageWebSocket クラスと StreamWebSocket クラスには、詳細な制御の扱いに関して同じモデルが採用されています。これらの主要なクラスにはそれぞれ、詳細な制御を行うための関連クラスが存在し、相互にやり取りしています。

どちらのタイプの WebSocket も、詳細な制御を行うための基本的なモデルは同じです。 以降の説明では StreamWebSocket を例として使っていますが、同じ手順を MessageWebSocket に適用することもできます。

アプリから接続操作を行うときは、必ず StreamWebSocketControl のプロパティを先に設定しておく必要があります。このため、詳細オプションを設定するタイミングとしてはソケットの作成直後が理想的です。ソケットから ConnectAsync メソッドが呼び出された後に StreamWebSocketControl プロパティを設定することは避けてください。

StreamWebSocket の詳細制御

StreamWebSocket には、いくつかの詳細オプションが存在します。

1 つの例として、StreamWebSocketControl.NoDelay オプションを詳しく見てみましょう。StreamWebSocket の作成時点の既定の設定では、このオプションは true に設定されます。つまり、Nagle アルゴリズムは使うことができません。ただし、小さいパケットを大量に送るアプリで StreamWebSocket を使う場合は、待ち時間さえ問題にならなければ、ネットワーク トラフィックを減らすために StreamWebSocketControl.NoDelayfalse に設定することで Nagle アルゴリズムを有効にできます。

次の例では、StreamWebSocket を作り、StreamWebSocketControl.NoDelayfalse に設定します。この処理が完了すると、アプリは 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 と共通していますが、いくつか異なる点もあります。

MessageWebSocket についても、ここで紹介した例とほぼ同じ方法でオプションを設定することができます。

注釈

制御データ以外にも、同様の関連クラスが主要なクラスに追加情報を提供します。その例を次に示します。

これらのクラスには、ソケットに対して追加情報を提供するプロパティが存在します。

関連トピック

その他

WebSocket を使った接続

MessageWebSocket を使って接続する方法

StreamWebSocket を使って接続する方法

TLS/SSL を使って WebSocket 接続のセキュリティを確保する方法

リファレンス

MessageWebSocket

StreamWebSocket

Windows.Networking.Sockets

サンプル

WebSocket のサンプル