public interface SseEventSource extends AutoCloseableSE
incoming Server-Sent Events
を読み取って処理するためのクライアント。 このクラスの SSE イベントソースインスタンスはスレッドセーフです。新しいインスタンスをビルドするには、SseEventSource.target(endpoint)
ファクトリメソッドを使用して新しいイベントソースビルダーを取得します。このビルダーをさらにカスタマイズして、最終的に新しい SSE イベントソースを作成するために使用できます。
SseEventSource
が作成されると、関連する web target
への open a connection
に使用できます。接続を確立した後、イベントソースは受信受信イベントの処理を開始します。新しいイベントが受信されるたびに、登録されたイベントコンシューマーで Consumer<InboundSseEvent>#accept(InboundSseEvent)
SE メソッドが呼び出されます。
SseEventSource
は、最後に受信した SSE イベント id
フィールド値に基づく欠落イベントの配信のネゴシエーションを含む、接続損失からの自動回復をサポートします。ただし、このフィールドがサーバーによって設定され、ネゴシエーション機能がサーバーによってサポートされている場合に限ります。接続が失われた場合、最後に受信した SSE イベント id
フィールド値が、SSE エンドポイントに送信される新しい接続リクエストの一部として "Last-Event-ID"
HTTP リクエストヘッダーで送信されます。このような再接続リクエストを受信すると、このネゴシエーション機能をサポートする SSE エンドポイントは、欠落したすべてのイベントを再生することが期待されます。ただし、これはベストエフォートメカニズムであり、すべてのイベントが損失なく配信されることを保証するものではないことに注意してください。すべてのイベントの受信に依存して、それに応じてクライアントアプリケーションコードを設計するべきではありません。
デフォルトでは、SSE エンドポイントへの接続が失われると、イベントソースは SSE エンドポイントへの再接続を試みる前に 500 ミリ秒待機します。ただし、SSE エンドポイントは、送信されたイベントに特別な retry
フィールド値を含めることにより、クライアント側の再試行遅延を制御できます。JAX-RS SseEventSource
は、エンドポイントによって設定された受信 SSE イベント retry
フィールド値を追跡し、最後に受信した retry
フィールド値を再接続遅延として使用して、それに応じて再接続遅延を調整します。
標準の接続損失障害の処理に加えて、JAX-RS SseEventSource
はさまざまな HTTP レスポンスステータスコードおよびヘッダーに対して異なる動作をします。
"Content-Type"
ヘッダー付き: これは通常の操作です。onEvent
はイベントごとに呼び出されます。onComplete
は、イベントがなくなると呼び出されます。onError
は、処理中に回復不能なエラーが発生した場合にのみ呼び出されます。"Content-Type"
ヘッダーが欠落している: これはエラー状態です。onError
が呼び出されます。onComplete
のみが呼び出されます。"Retry-After"
ヘッダーが有効な値に設定されている場合: これは、サーバーが使用できないが、クライアントは後で再接続する必要があることを示します。再接続する前にクライアントイベントソースが閉じられない限り、コンシューマーは呼び出されません(onComplete
が呼び出されます)。指定された遅延の後、クライアントは自動的に再接続を試行する必要があります。これにより、新しいレスポンスが発生します。"Retry-After"
ヘッダーが無効または欠落している: これはエラー状態です。onError
が呼び出されます。onError
が呼び出されます。 エラー条件レスポンスの場合、onError
コンシューマーに渡される Throwable
は、無効な Response
オブジェクトを含む WebApplicationException である必要があります。
修飾子と型 | インターフェースと説明 |
---|---|
static class | SseEventSource.Builder JAX-RS SseEventSource ビルダークラス。 |
修飾子と型 | メソッドと説明 |
---|---|
default void | close() このイベントソースを閉じます。 |
boolean | close(long timeout, TimeUnitSE unit) このイベントソースを閉じて、内部イベント処理タスクが指定された待機時間まで完了するのを待ちます。 |
boolean | isOpen() このイベントソースインスタンスがすでに opened になっていることを確認してください。 |
void | open() web target の基礎となる提供された SSE への接続を開き、受信 events の処理を開始します。 |
void | register(ConsumerSE<InboundSseEvent> onEvent) InboundSseEvent コンシューマーを登録します。 |
void | register(ConsumerSE<InboundSseEvent> onEvent, ConsumerSE<ThrowableSE> onError) InboundSseEvent および Throwable SE コンシューマーを登録します。 |
void | register(ConsumerSE<InboundSseEvent> onEvent, ConsumerSE<ThrowableSE> onError, RunnableSE onComplete) InboundSseEvent および Throwable SE コンシューマーと onComplete コールバックを登録します。 |
static SseEventSource.Builder | target(WebTarget endpoint) 新しく準備されたイベントソースインスタンスのさまざまなアスペクトを構成および微調整する便利な方法を提供する新しい event source builder を作成します。 |
void register(ConsumerSE<InboundSseEvent> onEvent)
InboundSseEvent
コンシューマーを登録します。特定のコンシューマーは、受信したイベントごとに 1 回呼び出されます。
onEvent
- イベントのコンシューマー。IllegalArgumentExceptionSE
- 提供されたパラメーターが null
の場合。void register(ConsumerSE<InboundSseEvent> onEvent, ConsumerSE<ThrowableSE> onError)
InboundSseEvent
および Throwable
SE コンシューマーを登録します。 イベントコンシューマーは、受信したイベントごとに 1 回呼び出され、Throwable
コンシューマーは、SseEventSource
で検出された回復不能なエラーが発生したときに呼び出されます。
onEvent
- イベントのコンシューマー。onError
- エラーコンシューマー。IllegalArgumentExceptionSE
- 提供されたパラメーターのいずれかが null
の場合。void register(ConsumerSE<InboundSseEvent> onEvent, ConsumerSE<ThrowableSE> onError, RunnableSE onComplete)
InboundSseEvent
および Throwable
SE コンシューマーと onComplete コールバックを登録します。 イベントコンシューマーは、受信したイベントごとに 1 回呼び出され、Throwable
コンシューマーは、SseEventSource
で回復不能なエラーが発生したときに呼び出され、onComplete コールバックは、接続が成功した後、受信するイベントがなくなったときに呼び出されます。onError コールバックが呼び出された場合は、onComplete コールバックは呼び出されないことに注意してください。
onEvent
- イベントのコンシューマー。onError
- エラーコンシューマー。onComplete
- onComplete ハンドラー。IllegalArgumentExceptionSE
- 提供されたパラメーターのいずれかが null
の場合。static SseEventSource.Builder target(WebTarget endpoint)
event source builder
を作成します。endpoint
- SSE ストリーミングエンドポイント。null
であってはなりません。NullPointerExceptionSE
- 提供された Web ターゲットが null
の場合。void open()
web target
の基礎となる提供された SSE への接続を開き、受信 events
の処理を開始します。IllegalStateExceptionSE
- イベントソースがすでに開かれている場合。boolean isOpen()
opened
になっていることを確認してください。true
、それ以外の場合は false
。default void close()
このメソッドは、内部イベント処理タスクが完了するまで最大 5 秒待機します。
AutoCloseableSE
の closeSE
boolean close(long timeout, TimeUnitSE unit)
このメソッドは、シャットダウンリクエスト後にイベント処理タスクの実行が完了するまで、またはタイムアウトが発生するまで、現在のスレッドが中断されるまで、どちらか早い方でブロックします。
イベント処理タスクの待機が中断された場合、このメソッドは false
を返す前にスレッドの interrupt
SE フラグを復元します。
timeout
- 待機する最大時間。unit
- タイムアウト引数の時間単位。true
、終了前にタイムアウトが経過した場合、終了が中断された場合は false
。Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.