クラス SockJsClient

java.lang.ObjectSE
org.springframework.web.socket.sockjs.client.SockJsClient
実装されたすべてのインターフェース:
LifecycleWebSocketClient

public class SockJsClient extends ObjectSE implements WebSocketClient, Lifecycle
WebSocketClient の SockJS 実装。フォールバックの代替手段を使用して、プレーンな HTTP ストリーミングと長いポーリング手法を介して WebSocket の相互作用をシミュレートします。

構成されたトランスポートにライフサイクルイベントを伝播するために、Lifecycle を実装します。

導入:
4.1
作成者:
Rossen Stoyanchev, Sam Brannen, Juergen Hoeller
関連事項:
  • コンストラクターの詳細

    • SockJsClient

      public SockJsClient(ListSE<Transport> transports)
      指定されたトランスポートで SockJsClient を作成します。

      リストに XhrTransport(またはより具体的には InfoReceiver の実装)が含まれる場合、インスタンスを使用して infoReceiver プロパティを初期化するか、デフォルトでは RestTemplateXhrTransport に設定されます。

      パラメーター:
      transports - 使用するトランスポートの(空でない)リスト
  • メソッドの詳細

    • setHttpHeaderNames

      public void setHttpHeaderNames(@Nullable StringSE... httpHeaderNames)
      WebSocketClient.doHandshake(WebSocketHandler, WebSocketHttpHeaders, URI) への各呼び出しのハンドシェイクヘッダーからコピーし、その SockJS 接続の一部として発行された他の HTTP リクエストでも使用される HTTP ヘッダーの名前。最初の情報リクエスト、XHR 送信または受信リクエスト。

      このプロパティが設定されていない場合、デフォルトでは、すべてのハンドシェイクヘッダーが他の HTTP リクエストにも使用されます。ハンドシェイクヘッダーのサブセット(認証ヘッダーなど)のみを他の HTTP リクエストに使用する場合に設定します。

      パラメーター:
      httpHeaderNames - HTTP ヘッダー名
    • getHttpHeaderNames

      @Nullable public StringSE[] getHttpHeaderNames()
      ハンドシェイクヘッダーからコピーされ、他の HTTP リクエストにも含まれる構成済みの HTTP ヘッダー名。
    • setInfoReceiver

      public void setInfoReceiver(InfoReceiver infoReceiver)
      InfoReceiver を設定して、SockJS セッションが開始する前に SockJS の「情報」リクエストを実行するために使用します。

      コンストラクターに提供されたトランスポートのリストに XhrTransport または InfoReceiver の実装が含まれていた場合、そのインスタンスはこのプロパティを初期化するために使用されていました。そうでなければ、デフォルトで RestTemplateXhrTransport になります。

      パラメーター:
      infoReceiver - SockJS「情報」リクエストに使用するトランスポート
    • getInfoReceiver

      public InfoReceiver getInfoReceiver()
      設定された InfoReceiver を返します(非 null)。
    • setMessageCodec

      public void setMessageCodec(SockJsMessageCodec messageCodec)
      使用する SockJsMessageCodec を設定します。

      Jackson がクラスパス上にある場合、デフォルトで Jackson2SockJsMessageCodec が使用されます。

    • getMessageCodec

      public SockJsMessageCodec getMessageCodec()
      使用する SockJsMessageCodec を返します。
    • setConnectTimeoutScheduler

      public void setConnectTimeoutScheduler(TaskScheduler connectTimeoutScheduler)
      接続タイムアウトタスクをスケジュールするための TaskScheduler を設定します。タイムアウト値は、最初の SockJS "Info" リクエストの期間に基づいて計算されます。接続タイムアウトタスクは、よりタイムリーなフォールバックを保証しますが、それ以外は完全にオプションです。

      デフォルトでは、これは設定されていません。その場合、フォールバックに時間がかかる可能性があります。

      パラメーター:
      connectTimeoutScheduler - 使用するタスクスケジューラ
    • start

      public void start()
      インターフェースからコピーされた説明: Lifecycle
      このコンポーネントを起動します。

      コンポーネントがすでに実行されている場合は、例外をスローしないでください。

      コンテナーの場合、これは適用されるすべてのコンポーネントに開始信号を伝播します。

      次で指定:
      インターフェース Lifecyclestart 
      関連事項:
    • stop

      public void stop()
      インターフェースからコピーされた説明: Lifecycle
      このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。非同期停止動作が必要な場合は、SmartLifecycle とその stop(Runnable) バリアントの実装を検討してください。

      この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、Lifecycle Bean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の Bean の destroy メソッドが、停止信号を事前に考慮することなく呼び出されます。

      コンポーネントが実行されていない(まだ開始されていない)場合は、例外をスローしないでください。

      コンテナーの場合、これは停止信号を適用するすべてのコンポーネントに伝播します。

      次で指定:
      インターフェース Lifecyclestop 
      関連事項:
    • isRunning

      public boolean isRunning()
      インターフェースからコピーされた説明: Lifecycle
      このコンポーネントが現在実行されているかどうかを確認します。

      コンテナーの場合、これは、適用されるすべてのコンポーネントが現在実行されている場合にのみ、true を返します。

      次で指定:
      インターフェース LifecycleisRunning 
      戻り値:
      コンポーネントが現在実行中かどうか
    • execute

      public CompletableFutureSE<WebSocketSession> execute(WebSocketHandler handler, StringSE uriTemplate, ObjectSE... uriVars)
      インターフェースからコピーされた説明: WebSocketClient
      指定された URL に対してハンドシェイクリクエストを実行し、指定されたハンドラーで結果の WebSocket セッションを処理します。
      次で指定:
      インターフェース WebSocketClientexecute 
      パラメーター:
      handler - セッションハンドラー
      uriTemplate - URL テンプレート
      uriVars - テンプレートを展開する変数
      戻り値:
      セッションが利用可能になったときに完了するフューチャ
    • execute

      インターフェースからコピーされた説明: WebSocketClient
      指定された URL に対してハンドシェイクリクエストを実行し、指定されたハンドラーで結果の WebSocket セッションを処理します。
      次で指定:
      インターフェース WebSocketClientexecute 
      パラメーター:
      handler - セッションハンドラー
      url - URL
      戻り値:
      セッションが利用可能になったときに完了するフューチャ
    • buildSockJsUrlInfo

      protected SockJsUrlInfo buildSockJsUrlInfo(URISE url)
      現在のクライアント実行用に新しい SockJsUrlInfo を作成します。

      デフォルトの実装では、必要に応じてランダムなサーバー ID とセッション ID を計算する SockJsUrlInfo が構築されます。

      パラメーター:
      url - ターゲット URL
      導入:
      6.1.3
      関連事項:
    • getUser

      @Nullable protected PrincipalSE getUser()
      ユーザーを戻して SockJS セッションに関連付け、WebSocketSession.getPrincipal() を介して利用可能にします。

      デフォルトでは、このメソッドは null を返します。

      戻り値:
      セッションに関連付けるユーザー (おそらく null)
    • clearServerInfoCache

      public void clearServerInfoCache()
      デフォルトでは、サーバーで WebSocket が無効になっているかどうかや、リクエストにかかった時間(トランスポートタイムアウト時間の計算に使用)など、SockJS の "Info" リクエストの結果がキャッシュされます。このメソッドを使用して、そのキャッシュをクリアし、キャッシュを再作成することができます。