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