パッケージ jakarta.websocket

アノテーション型 OnMessage


  • @RetentionSE(RUNTIMESE)
    @TargetSE(METHODSE)
    public @interface OnMessage
    このメソッドレベルのアノテーションを使用して、Java メソッドに受信 Web ソケットメッセージを受信させることができます。各 WebSocket エンドポイントには、ネイティブ Websocket メッセージ形式(テキスト、バイナリ、ピンポン)ごとに 1 つのメッセージ処理メソッドのみを含めることができます。このアノテーションを使用するメソッドは、以下で説明する型のパラメーターを持つことができます。そうしないと、コンテナーはデプロイ時にエラーを生成します。

    許可されるパラメーターは次のとおりです。

    1. 次の選択肢のいずれか 1 つのみ
      • メソッドがテキストメッセージを処理している場合:
        • StringSE はメッセージ全体を受信します
        • その型に変換されたメッセージ全体を受信するための Java プリミティブまたはクラス
        • メッセージを部分的に受け取る文字列とブール値のペア
        • メッセージ全体をブロッキングストリームとして受信する ReaderSE
        • エンドポイントにテキストデコーダーがあるオブジェクトパラメーター(Decoder.Text または Decoder.TextStream)。
      • メソッドがバイナリメッセージを処理している場合:
        • メッセージ全体を受信する byte[] または ByteBufferSE
        • byte[] とブール値のペア、またはメッセージを部分的に受信する ByteBufferSE とブール値のペア
        • メッセージ全体をブロッキングストリームとして受信する InputStreamSE
        • エンドポイントにバイナリデコーダーがあるオブジェクトパラメーター(Decoder.Binary または Decoder.BinaryStream)。
      • メソッドがポンメッセージを処理している場合:
        • ポンメッセージを処理するための PongMessage
    2. サーバーエンドポイントの jakarta.websocket.server.PathParam アノテーションが付けられたゼロから n 文字列または Java プリミティブパラメーター。
    3. およびオプションの Session パラメーター

    パラメーターは任意の順序でリストできます。

    メソッドは非 void 戻り値型を持つ場合があります。その場合、Web ソケットランタイムはこれを Web ソケットメッセージとして解釈してピアに戻る必要があります。この戻り値型に許可される void 以外のデータ型は、String、ByteBuffer、byte[]、Java プリミティブまたは同等のクラス、エンコーダーが存在するものです。メソッドが Java プリミティブを戻り値として使用する場合、開発者がこのエンドポイントに設定された型のエンコーダーを提供しない限り、実装は Java プリミティブの標準 Java 文字列表現を使用して送信するテキストメッセージを作成する必要があります。利用されます。メソッドが戻り値として Java プリミティブと同等のクラスを使用する場合、実装は上記の Java プリミティブと同等のテキストメッセージを作成する必要があります。

    開発者は、戻り型のメソッドの呼び出し中に開発者がセッションを閉じると、メソッドは完了しますが、戻り値はリモートエンドポイントに配信されないことに注意してください。送信失敗は、エンドポイントのエラー処理メソッドに戻されます。

    例:

     
     @OnMessage
     public void processGreeting(String message, Session session) {
         System.out.println("Greeting received:" + message);
     }
     
     
    例:
     
     @OnMessage
     public void processUpload(byte[] b, boolean last, Session session) {
         // process partial data here, which check on last to see if these is more on the way
     }
     
     
    開発者は、アノテーション付きメソッドが完了した後、型 ReaderSEByteBufferSE または InputStreamSE のメッセージオブジェクトを参照し続けるべきではありません。それらは実装によってリサイクルされる可能性があるためです。
    作成者:
    dannycoward
    • オプション要素のサマリー

      オプション要素  
      修飾子と型 オプションの要素 説明
      longmaxMessageSize
      このアノテーションが処理できるメソッドのメッセージの最大サイズをバイト単位で指定します。-1 を指定すると、最大値がないことを示します。
    • 要素の詳細

      • maxMessageSize

        long maxMessageSize
        このアノテーションが処理できるメソッドのメッセージの最大サイズをバイト単位で指定します。-1 を指定すると、最大値がないことを示します。デフォルトは -1 です。この属性は、アノテーションがメッセージ全体の処理に使用される場合にのみ適用され、メッセージを部分的に処理したり、ストリームまたはリーダーパラメーターを使用して受信メッセージを処理するメソッドには適用されません。受信メッセージ全体がこの制限を超えると、実装はエラーを生成し、メッセージが大きすぎるという理由を使用して接続を閉じます。
        戻り値:
        バイト単位の最大サイズ。
        デフォルト:
        -1L