public interface SseEventSource extends AutoCloseableSE
incoming Server-Sent Events
を読み取って処理するためのクライアント。 このクラスの SSE イベントソースインスタンスはスレッドセーフです。新しいインスタンスをビルドするには、SseEventSource.target(endpoint)
ファクトリメソッドを使用して新しいイベントソースビルダーを取得します。このビルダーをさらにカスタマイズして、最終的に新しい SSE イベントソースを作成するために使用できます。
SseEventSource
が作成されると、関連する web target
への open a connection
に使用できます。接続を確立した後、イベントソースは受信受信イベントの処理を開始します。新しいイベントが受信されるたびに、登録されたイベントコンシューマーで Consumer
SE メソッドが呼び出されます。
SseEventSource
は、接続損失からの自動回復をサポートします。これには、最後に受信した SSE イベント id
フィールド値に基づく欠落イベントの配信のネゴシエーションが含まれます。ただし、このフィールドがサーバーによって設定され、ネゴシエーション機能がサーバーによってサポートされている必要があります。接続が失われた場合、最後に受信した SSE イベント id
フィールド値が、SSE エンドポイントに送信される新しい接続リクエストの一部として "Last-Event-ID"
HTTP リクエストヘッダーで送信されます。このような再接続リクエストを受信すると、このネゴシエーション機能をサポートする SSE エンドポイントは、欠落したすべてのイベントを再生することが期待されます。ただし、これはベストエフォートメカニズムであり、すべてのイベントが損失なく配信されることを保証するものではないことに注意してください。すべてのイベントの受信に依存して、それに応じてクライアントアプリケーションコードを設計するべきではありません。
デフォルトでは、SSE エンドポイントの接続が失われると、イベントソースは 500 ミリ秒待機してから、SSE エンドポイントへの再接続を試行します。ただし、SSE エンドポイントは、任意の送信イベントに特別な retry
フィールド値を含めることにより、クライアント側の再試行遅延を制御できます。SseEventSource
は、エンドポイントによって設定された受信 SSE イベント retry
フィールド値を追跡し、最後に受信した retry
フィールド値を再接続遅延として使用して、それに応じて再接続遅延を調整します。
SseEventSource
は、標準の接続損失障害の処理に加えて、有効な値を持つ "Retry-After"
HTTP ヘッダーを含む SSE エンドポイントからの HTTP 503 Service Unavailable
レスポンスを自動的に処理します。HTTP 503 + "Retry-After"
技術は、接続およびトラフィック調整の手段として HTTP エンドポイントでよく使用されます。接続リクエストの代わりに HTTP 503 + "Retry-After"
レスポンスを受信した場合、SSE イベントソースは自動的に新しい再接続の試行をスケジュールし、受信した "Retry-After"
HTTP ヘッダー値を再接続遅延の 1 回限りのオーバーライドとして使用します。
修飾子と型 | インターフェースと説明 |
---|---|
static class | SseEventSource.Builder 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 コールバックは、受信するイベントがなくなったときに呼び出されます。
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 © 2019 Eclipse Foundation.
Use is subject to license terms.