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

インタフェースWebSocket



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

    WebSocketは、TCP接続を介した全二重通信を提供します。

    WebSocketを作成するには、builderを使用します。 WebSocketが構築されると、メッセージを送受信する準備が整います。 WebSocketが不要になったら、それを閉じなければなりません: クローズ・メッセージは、両方ともsentreceivedでなければなりません。 WebSocketはまた、abruptlyを閉じてもよい。

    一旦クローズされると、WebSocketclosedのままであり、再オープンすることはできません。

    タイプX (ここで、Xは: テキスト、バイナリ、Ping、Pongまたは閉じる)のメッセージは、それぞれ WebSocket.send{X}およびWebSocket.Listener .on{X}メソッドを介して非同期的に送受信されます。 各メソッドは、操作が完了すると完了するCompletionStageを返します。

    メッセージ(任意の型の)は、requestedの場合にのみ受信されることに注意してください。

    1つの未処理の送信操作が許可されています。 前の送信操作が完了する前に、送信操作を開始することはできません。 送信時に、返されたCompletableFutureが(通常または例外的に)を完了するまで、メッセージを変更してはなりません。

    テキスト・メッセージとバイナリ・メッセージは、全体または一部として送受信できます。 メッセージ全体は、対応するメソッドの1つまたは複数の呼び出しのシーケンスとして転送され、最後の呼び出しは追加のメソッド引数を介して識別されます。

    メッセージがByteBufferに含まれている場合、バイトはbuffer positionからbuffer limitに配置されているとみなされます。

    特に指定のないかぎり、nullパラメータの値により、メソッドとコンストラクタがNullPointerExceptionをスローします。

    実装上の注意:
    この実装メソッドは、CompletableFutureを返す前にブロックしません。
    導入されたバージョン:
    9
    • メソッドの詳細

      • sendText

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

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

        返されたCompletableFutureが(通常または例外的に)を完了するまで、CharSequenceを変更してはなりません。

        返されたCompletableFutureは、次のように例外的に完了できます:

        • IllegalArgumentException - messageが不正な形式のUTF-16シーケンスの場合
        • IllegalStateException - WebSocketが閉じている場合。またはCloseメッセージが送信された場合。または未処理の送信操作がある場合。または以前のバイナリ・メッセージがisLast == falseで送信された場合
        • IOException - この操作中にI/Oエラーが発生した場合。またはWebSocketがエラーのために閉じられた場合。
        実装上の注意:
        この実装は、部分的なUTF-16シーケンスを受け入れません。 このようなシーケンスが渡された場合、返されたCompletableFutureは例外的にIOExceptionで完了します。
        パラメータ:
        message - メッセージ
        isLast - trueメッセージの最後の部分であればfalse、そうでなければfalse
        戻り値:
        このWebSocketを持つCompletableFuture
      • sendBinary

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

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

        返されたCompletableFutureは、次のように例外的に完了できます:

        • IllegalStateException - WebSocketが閉じている場合。またはCloseメッセージが送信された場合。または未処理の送信操作がある場合。または以前のテキスト・メッセージがisLast == falseで送信された
        • IOException - この操作中にI/Oエラーが発生した場合。またはWebSocketがエラーのために閉じられた場合
        パラメータ:
        message - メッセージ
        isLast - trueメッセージの最後の部分であればfalse、そうでなければfalse
        戻り値:
        このWebSocketを持つCompletableFuture
      • sendPing

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

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

        Pingメッセージは、クライアントまたはサーバーのいずれかによって送受信されます。 キープアライブとして、またはリモート・エンドポイントがまだ応答していることを確認する手段として機能します。

        メッセージは、125バイト以下で構成する必要があります: message.remaining() <= 125

        返されたCompletableFutureは、次のように例外的に完了できます:

        • IllegalArgumentException - message.remaining() > 125の場合
        • IllegalStateException - WebSocketが閉じている場合。またはCloseメッセージが送信された場合。または未処理の送信操作がある場合
        • IOException - この操作中にI/Oエラーが発生した場合。またはWebSocketがエラーのために閉じられた場合
        パラメータ:
        message - メッセージ
        戻り値:
        このWebSocketを持つCompletableFuture
      • sendPong

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

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

        Pongメッセージは、未承諾であってもよく、以前に受信したPingにレスポンスして送信されてもよい。 後者の場合、Pongの内容は元のPingと同一でなければなりません。

        メッセージは、125バイト以下で構成する必要があります: message.remaining() <= 125

        返されたCompletableFutureは、次のように例外的に完了できます:

        • IllegalArgumentException - message.remaining() > 125の場合
        • IllegalStateException - WebSocketが閉じている場合。またはCloseメッセージが送信された場合。または未処理の送信操作がある場合
        • IOException - この操作中にI/Oエラーが発生した場合。またはWebSocketがエラーのために閉じられた場合
        パラメータ:
        message - メッセージ
        戻り値:
        このWebSocketを持つCompletableFuture
      • sendClose

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

        このメソッドが呼び出されると、これ以降のメッセージは送信されません。

        statusCodeは、範囲1000 <= code <= 4999の整数です。 ただし、一部の実装では、すべてのステータス・コードが有効であるとは限りません。 実装にかかわらず、1000は常に有効であり、100210031005 10061007100910101012 1013および1015は常に不正なコードである。

        reasonは、短い文字列で、123バイトより長くないUTF-8表現を持たなければなりません。 Closeメッセージ、ステータス・コード、および理由の詳細については、RFC 6455のセクション「5.5.1。閉じる」「7.4。ステータス・コード」を参照してください。

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

        返されたCompletableFutureは、次のように例外的に完了できます:

        • IllegalArgumentException - statusCodeが不正な値を持つ場合。またはreasonに長さが<= 123のUTF-8表現がない場合
        • IOException - この操作中にI/Oエラーが発生した場合。またはWebSocketがエラーのために閉じられました

        このメソッドがすでに呼び出されているか、またはWebSocketが閉じられている場合、このメソッドのその後の呼び出しは効果がなく、返されたCompletableFutureは正常に完了します。

        Closeメッセージがreceived beforeの場合、この呼び出しは終了ハンドシェークを完了し、返されたCompletableFutureが完了するまでにWebSocketが閉じられます。

        パラメータ:
        statusCode - ステータス・コード
        reason - 理由
        戻り値:
        このWebSocketを持つCompletableFuture
      • request

        void request​(long n)
        nより多くのメッセージをListenerが受信できるようにします。

        受信メッセージの実際の数は、Closeメッセージが受信された場合、WebSocketが終了した場合、またはエラーが発生した場合には少なくなります。

        作成されたばかりのWebSocketはまだ何もリクエストしていません。 通常、メッセージの最初のリクエストはListener.onOpenで行われます。

        WebSocketが閉じている場合、このメソッドを呼び出すことは効果がありません。

        実装上の注意:
        この実装では、メッセージの受信方法が事前に分かっていないため、部分メッセージと全体メッセージを区別しません。

        サーバーがリクエストより多くのメッセージを送信した場合、この実装はこれらのメッセージをTCP接続にキューイングし、送信者にTCPフロー制御による送信を強制的に停止させる可能性があります。

        パラメータ:
        n - メッセージ数
        例外:
        IllegalArgumentException - n < 0の場合
      • getSubprotocol

        String getSubprotocol​()
        このWebSocketに対して選択されたsubprotocolを返します。
        戻り値:
        サブ・プロトコル、または存在しない場合は空のString
      • isClosed

        boolean isClosed​()
        WebSocketが閉じているかどうかを確認します。

        WebSocketが閉じられると、それ以上のメッセージは送信または受信できません。

        戻り値:
        WebSocketが閉じている場合はtrue、それ以外の場合はfalse
      • abort

        void abort​()
            throws IOException
        突然WebSocketを閉じます。

        このメソッドはいつでも呼び出すことができます。 このメソッドは、基底のTCP接続を閉じ、WebSocketを閉じた状態にします。

        結果として、onCloseまたはonErrorが以前に呼び出されていない限り、Listener.onCloseが呼び出されます。 この場合、追加の呼び出しは行われません。

        WebSocketがすでに閉じられている場合、このメソッドを呼び出すことは効果がありません。

        例外:
        IOException - 入出力エラーが発生した場合