クラス 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, ObjectSE... uriVars) 指定された URL に対してハンドシェイクリクエストを実行し、指定されたハンドラーで結果の WebSocket セッションを処理します。execute
(WebSocketHandler handler, WebSocketHttpHeaders headers, URISE url) 指定された URL に対してハンドシェイクリクエストを実行し、指定されたハンドラーで結果の WebSocket セッションを処理します。StringSE[]
ハンドシェイクヘッダーからコピーされ、他の HTTP リクエストにも含まれる構成済みの HTTP ヘッダー名。設定されたInfoReceiver
を返します(非null
)。使用する SockJsMessageCodec を返します。protected PrincipalSE
getUser()
ユーザーを戻して SockJS セッションに関連付け、WebSocketSession.getPrincipal()
を介して利用可能にします。boolean
このコンポーネントが現在実行されているかどうかを確認します。void
setConnectTimeoutScheduler
(TaskScheduler connectTimeoutScheduler) 接続タイムアウトタスクをスケジュールするためのTaskScheduler
を設定します。タイムアウト値は、最初の SockJS "Info" リクエストの期間に基づいて計算されます。void
setHttpHeaderNames
(StringSE... httpHeaderNames) WebSocketClient.doHandshake(WebSocketHandler, WebSocketHttpHeaders, URI)
への各呼び出しのハンドシェイクヘッダーからコピーし、その SockJS 接続の一部として発行された他の HTTP リクエストでも使用される HTTP ヘッダーの名前。void
setInfoReceiver
(InfoReceiver infoReceiver) InfoReceiver
を設定して、SockJS セッションが開始する前に SockJS の「情報」リクエストを実行するために使用します。void
setMessageCodec
(SockJsMessageCodec messageCodec) 使用する SockJsMessageCodec を設定します。void
start()
このコンポーネントを起動します。void
stop()
このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。クラス 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)
バリアントの実装を検討してください。この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、
Lifecycle
Bean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の 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" リクエストの結果がキャッシュされます。このメソッドを使用して、そのキャッシュをクリアし、キャッシュを再作成することができます。