public class SockJsClient extends ObjectSE implements WebSocketClient, Lifecycle
WebSocketClient の SockJS 実装であり、プレーン HTTP ストリーミングおよびロングポーリングテクニックを介して WebSocket の相互作用をシミュレートするフォールバックの代替手段を備えています。 構成されたトランスポートにライフサイクルイベントを伝播するために、Lifecycle を実装します。
Transport| コンストラクターと説明 |
|---|
SockJsClient(ListSE<Transport> transports) 指定されたトランスポートで SockJsClient を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | clearServerInfoCache() デフォルトでは、サーバーで WebSocket が無効になっているかどうかや、リクエストにかかった時間(トランスポートタイムアウト時間の計算に使用)を含む SockJS "Info" リクエストの結果がキャッシュされます。 |
ListenableFuture<WebSocketSession> | doHandshake(WebSocketHandler handler, StringSE uriTemplate, ObjectSE... uriVars) |
ListenableFuture<WebSocketSession> | doHandshake(WebSocketHandler handler, WebSocketHttpHeaders headers, URISE url) |
StringSE[] | getHttpHeaderNames() ハンドシェイクヘッダーからコピーされ、他の HTTP リクエストにも含まれる構成済みの HTTP ヘッダー名。 |
InfoReceiver | getInfoReceiver() 設定された InfoReceiver を返します(非 null)。 |
SockJsMessageCodec | getMessageCodec() 使用する SockJsMessageCodec を返します。 |
protected PrincipalSE | getUser() ユーザーを戻して SockJS セッションに関連付け、 WebSocketSession.getPrincipal() を介して利用可能にします。 |
boolean | isRunning() このコンポーネントが現在実行されているかどうかを確認します。 |
void | setConnectTimeoutScheduler(TaskScheduler connectTimeoutScheduler) 接続タイムアウトタスクをスケジュールするための TaskScheduler を設定します。タイムアウト値は、最初の SockJS "Info" リクエストの期間に基づいて計算されます。 |
void | setHttpHeaderNames(StringSE... httpHeaderNames)doHandshake(WebSocketHandler, WebSocketHttpHeaders, URI) への各呼び出しのハンドシェイクヘッダーからコピーし、その SockJS 接続の一部として発行された他の HTTP リクエストでも使用される HTTP ヘッダーの名前。 |
void | setInfoReceiver(InfoReceiver infoReceiver)InfoReceiver を設定して、SockJS セッションが開始する前に SockJS の「情報」リクエストを実行するために使用します。 |
void | setMessageCodec(SockJsMessageCodec messageCodec) 使用する SockJsMessageCodec を設定します。 |
void | start() このコンポーネントを起動します。 |
void | stop() このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic SockJsClient(ListSE<Transport> transports)
SockJsClient を作成します。 リストに XhrTransport(またはより具体的には InfoReceiver の実装)が含まれる場合、インスタンスを使用して infoReceiver プロパティを初期化するか、デフォルトでは RestTemplateXhrTransport に設定されます。
transports - 使用するトランスポートの(空でない)リスト public void setHttpHeaderNames(@Nullable StringSE... httpHeaderNames)
doHandshake(WebSocketHandler, WebSocketHttpHeaders, URI) への各呼び出しのハンドシェイクヘッダーからコピーし、その SockJS 接続の一部として発行された他の HTTP リクエストでも使用される HTTP ヘッダーの名前。最初の情報リクエスト、XHR 送信または受信リクエスト。このプロパティが設定されていない場合、デフォルトでは、すべてのハンドシェイクヘッダーが他の HTTP リクエストにも使用されます。ハンドシェイクヘッダーのサブセット(認証ヘッダーなど)のみを他の HTTP リクエストに使用する場合に設定します。
httpHeaderNames - HTTP ヘッダー名 @Nullable public StringSE[] getHttpHeaderNames()
public void setInfoReceiver(InfoReceiver infoReceiver)
InfoReceiver を設定して、SockJS セッションが開始する前に SockJS の「情報」リクエストを実行するために使用します。 コンストラクターに提供されたトランスポートのリストに XhrTransport または InfoReceiver の実装が含まれていた場合、そのインスタンスはこのプロパティを初期化するために使用されていました。そうでなければ、デフォルトで RestTemplateXhrTransport になります。
infoReceiver - SockJS「情報」リクエストに使用するトランスポート public InfoReceiver getInfoReceiver()
InfoReceiver を返します(非 null)。public void setMessageCodec(SockJsMessageCodec messageCodec)
Jackson がクラスパス上にある場合、デフォルトで Jackson2SockJsMessageCodec が使用されます。
public SockJsMessageCodec getMessageCodec()
public void setConnectTimeoutScheduler(TaskScheduler connectTimeoutScheduler)
TaskScheduler を設定します。タイムアウト値は、最初の SockJS "Info" リクエストの期間に基づいて計算されます。接続タイムアウトタスクは、よりタイムリーなフォールバックを保証しますが、それ以外は完全にオプションです。デフォルトでは、これは設定されていません。その場合、フォールバックに時間がかかる可能性があります。
connectTimeoutScheduler - 使用するタスクスケジューラ public void start()
Lifecycleコンポーネントがすでに実行されている場合は、例外をスローしないでください。
コンテナーの場合、これは適用されるすべてのコンポーネントに開始シグナルを伝播します。
Lifecycle の start SmartLifecycle.isAutoStartup()public void stop()
LifecycleSmartLifecycle とその stop(Runnable) バリアントの実装を検討してください。 この停止通知が破棄の前に来るとは限らないことに注意してください。通常のシャットダウンでは、Lifecycle Bean は一般的な破棄コールバックが伝達される前に、まず停止通知を受け取ります。ただし、コンテキストの有効期間中のホットリフレッシュ時、またはリフレッシュ試行が中止されたときは、destroy メソッドのみが呼び出されます。
コンポーネントがまだ開始されていない場合は、例外をスローしないでください。
コンテナーの場合、これは停止シグナルを適用するすべてのコンポーネントに伝播します。
Lifecycle の stop SmartLifecycle.stop(Runnable), DisposableBean.destroy()public boolean isRunning()
Lifecycle コンテナーの場合、これは、適用されるすべてのコンポーネントが現在実行されている場合にのみ、true を返します。
public ListenableFuture<WebSocketSession> doHandshake(WebSocketHandler handler, StringSE uriTemplate, ObjectSE... uriVars)
WebSocketClient の doHandshake public final ListenableFuture<WebSocketSession> doHandshake(WebSocketHandler handler, @Nullable WebSocketHttpHeaders headers, URISE url)
WebSocketClient の doHandshake @Nullable protected PrincipalSE getUser()
WebSocketSession.getPrincipal() を介して利用可能にします。 デフォルトでは、このメソッドは null を返します。
null)public void clearServerInfoCache()