パッケージ jakarta.websocket
アノテーションインターフェース OnMessage
このメソッドレベルのアノテーションを使用して、Java メソッドに受信 Web ソケットメッセージを受信させることができます。各 WebSocket エンドポイントには、ネイティブ Websocket メッセージ形式(テキスト、バイナリ、ピンポン)ごとに 1 つのメッセージ処理メソッドのみを含めることができます。このアノテーションを使用するメソッドは、以下で説明する型のパラメーターを持つことができます。そうしないと、コンテナーはデプロイ時にエラーを生成します。
許可されるパラメーターは次のとおりです。
- 次の選択肢のいずれか 1 つのみ
- メソッドがテキストメッセージを処理している場合:
String
SE はメッセージ全体を受信します- その型に変換されたメッセージ全体を受信するための Java プリミティブまたはクラス
- メッセージを部分的に受け取る文字列とブール値のペア
- メッセージ全体をブロッキングストリームとして受信する
Reader
SE - エンドポイントにテキストデコーダーがあるオブジェクトパラメーター(
Decoder.Text
またはDecoder.TextStream
)。
- メソッドがバイナリメッセージを処理している場合:
- メッセージ全体を受信する byte[] または
ByteBuffer
SE - byte[] とブール値のペア、またはメッセージを部分的に受信する
ByteBuffer
SE とブール値のペア - メッセージ全体をブロッキングストリームとして受信する
InputStream
SE - エンドポイントにバイナリデコーダーがあるオブジェクトパラメーター(
Decoder.Binary
またはDecoder.BinaryStream
)。
- メッセージ全体を受信する byte[] または
- メソッドがポンメッセージを処理している場合:
- ポンメッセージを処理するための
PongMessage
- ポンメッセージを処理するための
- メソッドがテキストメッセージを処理している場合:
- サーバーエンドポイントの
jakarta.websocket.server.PathParam
アノテーションが付けられたゼロから n 文字列または Java プリミティブパラメーター。 - およびオプションの
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
}
開発者は、アノテーション付きメソッドが完了した後、型 Reader
SE、ByteBuffer
SE または InputStream
SE のメッセージオブジェクトを参照し続けるべきではありません。それらは実装によってリサイクルされる可能性があるためです。- 作成者:
- dannycoward
オプション要素の概要
オプション要素修飾子と型オプションの要素説明long
このアノテーションを付けるメソッドが処理できるメッセージの最大サイズをバイト単位で指定します。最大値が構成されていないことを示す場合は -1 を指定します。
要素の詳細
maxMessageSize
long maxMessageSizeこのアノテーションを付けるメソッドが処理できるメッセージの最大サイズをバイト単位で指定します。または、最大値が設定されていないことを示す -1 を指定します。デフォルトは -1 です。この属性は、アノテーションを使用してメッセージ全体を処理する場合のみ適用され、メッセージを部分的に処理するメソッドや、ストリームまたはリーダーパラメーターを使用して受信メッセージを処理するメソッドには適用されません。受信メッセージ全体がこの制限を超えると、実装によってエラーが生成され、メッセージが大きすぎるという理由で接続が閉じられます。この属性を
Integer#MAX_VALUE
より大きい値に設定すると、JVM がInteger#MAX_VALUE
より大きい文字列 (テキストメッセージの場合) または ByteBuffers (バイナリメッセージの場合) をサポートしていない限り、DeploymentException
がトリガーされます。Java 22 では、このようなサポートの計画はありません。- 戻り値:
- バイト単位の最大サイズ。
- デフォルト:
- -1L