モジュール jdk.incubator.httpclient
パッケージ jdk.incubator.http

インタフェースWebSocket


  • public interface WebSocket
    WebSocketクライアント。
    インキュベーション機能。将来のリリースで削除されます。

    WebSocketを作成するには、HttpClient.newWebSocketBuilder()メソッドを使用します。 WebSocketを閉じるには、sendCloseまたはabortのいずれかのメソッドを使用します。

    WebSocketメッセージは、WebSocketを介して送信され、WebSocket Listenerを介して受信されます。 メッセージは、出力が閉じられるまで送信され、入力が閉じられるまで受信されます。 出力と入力の両方が閉じているWebSocketは、それ自体が閉じられていると考えられます。 これらの状態をチェックするには、isOutputClosed()isInputClosed()を使用します。

    メッセージを送信するメソッドは、メッセージが送信されると正常に完了するCompletableFutureを返します。エラーが発生した場合は例外的に完了します。

    メッセージを受信するには、まずそれをリクエストします。 nメッセージがリクエストされた場合、リスナーはWebSocketから指定されたメソッドのより多くの呼び出しをnまで受信します。 メッセージをリクエストするには、request(long)を使用します。 リクエストは加算演算です。つまり、request(n)に続くrequest(m)request(n + m)に相当します。

    部分的にメッセージを送信または受信する場合、メッセージ全体は、最後の呼び出しが追加のメソッド引数を介して識別される一連の1つ以上の呼び出しとして転送されます。

    特に指定がない限り、nullの引数はWebSocketのメソッドでNullPointerExceptionをスローします。同様に、WebSocketnullの引数をListenerのメソッドに渡しません。

    実装要件:
    WebSocketのメソッドは、NullPointerExceptionIllegalArgumentException、およびIllegalStateExceptionに関して、失敗-アトミックです。 つまり、メソッドが例外をスローするか、返されたCompletableFutureが例外を指定して例外的に完了すると、WebSocketはメソッドがまったく呼び出されていないかのように動作します。

    WebSocketは、リスナーのメソッドをスレッド・セーフな方法で呼び出します。

    WebSocketは、それぞれPongメッセージとCloseメッセージで応答することによって、PingとCloseメッセージを自動的に処理します。 リスナーがPingまたはCloseメッセージを受信した場合、リスナーからの必須アクションは必要ありません。

    導入されたバージョン:
    9
    • ネストされたクラスのサマリー

      ネストされたクラス 
      修飾子と型 インタフェース 説明
      static interface  WebSocket.Builder
      WebSocketインスタンスを作成するためのビルダー。
      static interface  WebSocket.Listener
      WebSocketの受信インタフェース。
      static class  WebSocket.MessagePart
      部分メッセージを識別するためにWebSocket.Listenerによって使用されるマーカー。
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      static int NORMAL_CLOSURE
      WebSocket Closeメッセージのステータス・コード(1000)は、正常終了を示します。これは、接続が確立された目的が達成されたことを意味します。
    • メソッドの詳細

      • sendText

        CompletableFuture<WebSocket> sendText​(CharSequence message,
                                              boolean isLast)
        指定されたCharSequenceの文字を含むテキスト・メッセージを送信します。

        テキスト・メッセージを送信するには、前のテキストまたはバイナリ・メッセージが送信された後にのみ、このメソッドを呼び出します。 このメソッドから返されたCompletableFutureが完了するまで、文字シーケンスを変更しないでください。

        このメソッドから返されたCompletableFutureは、次のように例外的に完了できます:

        • IllegalArgumentException - messageが不正な形式のUTF-16シーケンスの場合
        • IllegalStateException - sendCloseが呼び出された場合、または前のメッセージがまだ送信されていない場合、または以前のバイナリ・メッセージがisLast == falseで送信された場合
        • IOException - I/Oエラーが発生した場合
        実装上の注意:
        部分的なUTF-16シーケンスがこのメソッドに渡された場合、返されるCompletableFutureは例外的にIOExceptionで完了します。
        パラメータ:
        message - メッセージ
        isLast - trueメッセージの最後の部分であればfalse、そうでなければfalse
        戻り値:
        このWebSocketで、メッセージが送信されたときに完了するCompletableFuture
      • sendBinary

        CompletableFuture<WebSocket> sendBinary​(ByteBuffer message,
                                                boolean isLast)
        指定されたByteBufferからバイナリ・メッセージをバイト数で送信します。

        バイナリ・メッセージを送信するには、前のテキストまたはバイナリ・メッセージが送信された後にのみ、このメソッドを呼び出します。 メッセージは、バッファ位置からその限界までのバイトで構成されます。 このメソッドから返されたCompletableFutureが正常に終了すると、バッファには残りのバイトがありません。 それ以降はバッファにアクセスしてはなりません。

        このメソッドから返されたCompletableFutureは、次のように例外的に完了できます:

        • IllegalStateException - sendCloseが呼び出された場合、または前のメッセージがまだ送信されていない場合、またはisLast == falseで前のテキスト・メッセージが送信された場合
        • IOException - I/Oエラーが発生した場合
        パラメータ:
        message - メッセージ
        isLast - trueメッセージの最後の部分であればfalse、そうでなければfalse
        戻り値:
        このWebSocketで、メッセージが送信されたときに完了するCompletableFuture
      • sendPing

        CompletableFuture<WebSocket> sendPing​(ByteBuffer message)
        指定されたByteBufferからバイト数のPingメッセージを送信します。

        メッセージは、バッファ位置からその限界までの125バイト以下で構成されます。 このメソッドから返されたCompletableFutureが正常に終了すると、バッファには残りのバイトがありません。 それ以降はバッファにアクセスしてはなりません。

        このメソッドから返されたCompletableFutureは、次のように例外的に完了できます:

        パラメータ:
        message - メッセージ
        戻り値:
        Pingメッセージが送信されたときに、このWebSocketで完了するCompletableFuture
      • sendPong

        CompletableFuture<WebSocket> sendPong​(ByteBuffer message)
        指定されたByteBufferのバイトを含むPongメッセージを送信します。

        メッセージは、バッファ位置からその限界までの125バイト以下で構成されます。 このメソッドから返されたCompletableFutureが正常に終了すると、バッファには残りのバイトがありません。 それ以降はバッファにアクセスしてはなりません。

        このメソッドから返されたCompletableFutureは、次のように例外的に完了できます:

        パラメータ:
        message - メッセージ
        戻り値:
        Pongメッセージが送信されたときに、このWebSocketで完了するCompletableFuture
      • sendClose

        CompletableFuture<WebSocket> sendClose​(int statusCode,
                                               String reason)
        指定されたステータス・コードと理由でCloseメッセージを送信し、正常終了を開始します。

        このメソッドが返すとき、出力は閉じられています。

        statusCodeは、範囲1000 <= code <= 4999の整数です。 ステータス・コード10021003100610071009101010121013および1015は不正です。 他のステータス・コードに関する動作は実装固有です。 reasonは、123バイト以下のUTF-8表現を持つ文字列です。

        一般的なケースでは、ステータス・コードとして整数定数NORMAL_CLOSUREを使用し、理由として空の文字列を使用します。

        このメソッドから返されたCompletableFutureは、次のように例外的に完了できます:

        実装要件:
        Closeメッセージを送信しているエンドポイントは、さまざまな理由により、補完的なCloseメッセージを適時に受信しないことがあります。 WebSocket実装は、sendCloseメソッドが呼び出されると、Closeフレームが受信されたかどうかにかかわらず、このAPIのユーザーからの介入なしにWebSocketが終了することを保証するクロージャ・メカニズムを提供する責任があります。 メソッドsendCloseは、おそらく、このAPIのユーザーからの最後の呼び出しであるように設計されています。
        パラメータ:
        statusCode - ステータス・コード
        reason - 理由
        戻り値:
        Closeメッセージが送信されたときに、このWebSocketで完了するCompletableFuture
      • request

        void request​(long n)
        このWebSocketからより多くのメッセージをnにリクエストします。

        このWebSocketは、リスナーonTextonBinaryonPingonPongまたはonCloseメソッドをnまでさらに呼び出します。

        このメソッドはいつでも呼び出すことができます。

        パラメータ:
        n - リクエストされたメッセージの数
        例外:
        IllegalArgumentException - n <= 0の場合
      • getSubprotocol

        String getSubprotocol()
        このWebSocketのサブ・プロトコルを返します。

        このメソッドはいつでも呼び出すことができます。

        戻り値:
        このWebSocketのサブ・プロトコル、またはサブ・プロトコルがない場合は空のString
      • isOutputClosed

        boolean isOutputClosed()
        このWebSocketがメッセージを送信するために完全に閉じられているかどうかを伝えます。

        このメソッドがtrueを返した場合、後続の呼び出しでもtrueが返されます。 このメソッドはいつでも呼び出すことができます。

        戻り値:
        閉じている場合はtrue、そうでない場合はfalse
      • isInputClosed

        boolean isInputClosed()
        このWebSocketがメッセージを受信するために完全に閉じられているかどうかを伝えます。

        このメソッドがtrueを返した場合、後続の呼び出しでもtrueが返されます。 このメソッドはいつでも呼び出すことができます。

        戻り値:
        閉じている場合はtrue、そうでない場合はfalse
      • abort

        void abort()
        このWebSocketを突然閉じます。

        このメソッドが返ると、入力と出力の両方が閉じられます。 このメソッドはいつでも呼び出すことができます。 後続の呼び出しは効果がありません。

        APIの注:
        その実装、状態(例えば、メッセージがその時点で転送されているかどうか)、および関連するリソースの解放中に起こりうるエラーに応じて、このWebSocketはリスナーonErrorを呼び出すことがあります。