クラス SockJsClient
- 実装されているすべてのインターフェース:
Lifecycle
,WebSocketClient
WebSocketClient
の SockJS 実装。フォールバックの代替手段を使用して、プレーンな HTTP ストリーミングと長いポーリング手法を介して WebSocket の相互作用をシミュレートします。 構成されたトランスポートにライフサイクルイベントを伝播するために、Lifecycle
を実装します。
- 導入:
- 4.1
- 作成者:
- Rossen Stoyanchev, Sam Brannen, Juergen Hoeller
- 関連事項:
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected SockJsUrlInfo
buildSockJsUrlInfo
(URISE url) 現在のクライアント実行用に新しいSockJsUrlInfo
を作成します。void
デフォルトでは、サーバーで WebSocket が無効になっているかどうかや、リクエストにかかった時間(トランスポートタイムアウト時間の計算に使用)など、SockJS の "Info" リクエストの結果がキャッシュされます。execute
(WebSocketHandler handler, StringSE uriTemplate, @Nullable ObjectSE... uriVars) 指定された URL に対してハンドシェイクリクエストを実行し、指定されたハンドラーで結果の WebSocket セッションを処理します。execute
(WebSocketHandler handler, @Nullable WebSocketHttpHeaders headers, URISE url) 指定された URL に対してハンドシェイクリクエストを実行し、指定されたハンドラーで結果の WebSocket セッションを処理します。ハンドシェイクヘッダーからコピーされ、他の HTTP リクエストにも含まれる構成済みの HTTP ヘッダー名。設定されたInfoReceiver
を返します(非null
)。使用する SockJsMessageCodec を返します。protected @Nullable PrincipalSE
getUser()
ユーザーを戻して SockJS セッションに関連付け、WebSocketSession.getPrincipal()
を介して利用可能にします。boolean
このコンポーネントが現在実行されているかどうかを確認します。void
setConnectTimeoutScheduler
(TaskScheduler connectTimeoutScheduler) 接続タイムアウトタスクをスケジュールするためのTaskScheduler
を設定します。タイムアウト値は、最初の SockJS "Info" リクエストの期間に基づいて計算されます。void
setHttpHeaderNames
(StringSE @Nullable... httpHeaderNames) execute(WebSocketHandler, WebSocketHttpHeaders, URI)
への各呼び出しのハンドシェイクヘッダーからコピーされ、その SockJS 接続の一部として発行される他の HTTP リクエスト (初期情報リクエスト、XHR 送信リクエストまたは受信リクエストなど) でも使用される HTTP ヘッダーの名前。void
setInfoReceiver
(InfoReceiver infoReceiver) InfoReceiver
を設定して、SockJS セッションが開始する前に SockJS の「情報」リクエストを実行するために使用します。void
setMessageCodec
(SockJsMessageCodec messageCodec) 使用する SockJsMessageCodec を設定します。void
start()
このコンポーネントを起動します。void
stop()
このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。
コンストラクターの詳細
SockJsClient
指定されたトランスポートでSockJsClient
を作成します。リストに
XhrTransport
(またはより具体的にはInfoReceiver
の実装)が含まれる場合、インスタンスを使用してinfoReceiver
プロパティを初期化するか、デフォルトではRestTemplateXhrTransport
に設定されます。- パラメーター:
transports
- 使用するトランスポートの(空でない)リスト
メソッドの詳細
setHttpHeaderNames
execute(WebSocketHandler, WebSocketHttpHeaders, URI)
への各呼び出しのハンドシェイクヘッダーからコピーされ、その SockJS 接続の一部として発行される他の HTTP リクエスト (初期情報リクエスト、XHR 送信リクエストまたは受信リクエストなど) でも使用される HTTP ヘッダーの名前。デフォルトでは、このプロパティが設定されていない場合、すべてのハンドシェイクヘッダーが他の HTTP リクエストにも使用されます。ハンドシェイクヘッダーのサブセット (認証ヘッダーなど) のみを他の HTTP リクエストに使用する場合は、これを設定します。
- パラメーター:
httpHeaderNames
- HTTP ヘッダー名
getHttpHeaderNames
setInfoReceiver
InfoReceiver
を設定して、SockJS セッションが開始する前に SockJS の「情報」リクエストを実行するために使用します。コンストラクターに提供されたトランスポートのリストに
XhrTransport
またはInfoReceiver
の実装が含まれていた場合、そのインスタンスはこのプロパティを初期化するために使用されていました。そうでなければ、デフォルトでRestTemplateXhrTransport
になります。- パラメーター:
infoReceiver
- SockJS「情報」リクエストに使用するトランスポート
getInfoReceiver
設定されたInfoReceiver
を返します(非null
)。setMessageCodec
使用する SockJsMessageCodec を設定します。Jackson がクラスパス上にある場合、デフォルトで
Jackson2SockJsMessageCodec
が使用されます。getMessageCodec
使用する SockJsMessageCodec を返します。setConnectTimeoutScheduler
接続タイムアウトタスクをスケジュールするためのTaskScheduler
を設定します。タイムアウト値は、最初の SockJS "Info" リクエストの期間に基づいて計算されます。接続タイムアウトタスクは、よりタイムリーなフォールバックを保証しますが、それ以外は完全にオプションです。デフォルトでは、これは設定されていません。その場合、フォールバックに時間がかかる可能性があります。
- パラメーター:
connectTimeoutScheduler
- 使用するタスクスケジューラ
start
stop
public void stop()インターフェースからコピーされた説明:Lifecycle
このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。非同期停止動作が必要な場合は、SmartLifecycle
とそのstop(Runnable)
バリアントの実装を検討してください。この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、
Lifecycle
Bean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の Bean の destroy メソッドが、停止シグナルを事前に考慮することなく呼び出されます。コンポーネントが実行されていない(まだ開始されていない)場合は、例外をスローしないでください。
コンテナーの場合、これは停止シグナルを適用するすべてのコンポーネントに伝播します。
isRunning
execute
public CompletableFutureSE<WebSocketSession> execute(WebSocketHandler handler, StringSE uriTemplate, @Nullable ObjectSE... uriVars) インターフェースからコピーされた説明:WebSocketClient
指定された URL に対してハンドシェイクリクエストを実行し、指定されたハンドラーで結果の WebSocket セッションを処理します。- 次で指定:
- インターフェース
WebSocketClient
のexecute
- パラメーター:
handler
- セッションハンドラーuriTemplate
- URL テンプレートuriVars
- テンプレートを展開する変数- 戻り値:
- セッションが利用可能になったときに完了するフューチャ
execute
public final CompletableFutureSE<WebSocketSession> execute(WebSocketHandler handler, @Nullable WebSocketHttpHeaders headers, URISE url) インターフェースからコピーされた説明:WebSocketClient
指定された URL に対してハンドシェイクリクエストを実行し、指定されたハンドラーで結果の WebSocket セッションを処理します。- 次で指定:
- インターフェース
WebSocketClient
のexecute
- パラメーター:
handler
- セッションハンドラーurl
- URL- 戻り値:
- セッションが利用可能になったときに完了するフューチャ
buildSockJsUrlInfo
現在のクライアント実行用に新しいSockJsUrlInfo
を作成します。デフォルトの実装では、必要に応じてランダムなサーバー ID とセッション ID を計算する
SockJsUrlInfo
が構築されます。- パラメーター:
url
- ターゲット URL- 導入:
- 6.1.3
- 関連事項:
getUser
ユーザーを戻して SockJS セッションに関連付け、WebSocketSession.getPrincipal()
を介して利用可能にします。デフォルトでは、このメソッドは
null
を返します。- 戻り値:
- セッションに関連付けるユーザー (おそらく
null
)
clearServerInfoCache
public void clearServerInfoCache()デフォルトでは、サーバーで WebSocket が無効になっているかどうかや、リクエストにかかった時間(トランスポートタイムアウト時間の計算に使用)など、SockJS の "Info" リクエストの結果がキャッシュされます。このメソッドを使用して、そのキャッシュをクリアし、キャッシュを再作成することができます。