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, waitSE
public 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()
Lifecycle
SmartLifecycle
とその stop(Runnable)
バリアントの実装を検討してください。 この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、Lifecycle
Bean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の 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()