クラス SubProtocolWebSocketHandler

java.lang.ObjectSE
org.springframework.web.socket.messaging.SubProtocolWebSocketHandler
実装されたすべてのインターフェース:
LifecyclePhasedSmartLifecycleMessageHandlerSubProtocolCapableWebSocketHandler

public class SubProtocolWebSocketHandler extends ObjectSE implements WebSocketHandler, SubProtocolCapable, MessageHandler, SmartLifecycle
サブプロトコルハンドラーが WebSocket クライアントからアプリケーションにメッセージを送信できる MessageChannel とともに、受信 WebSocket メッセージを SubProtocolHandler に委譲する WebSocketHandler の実装。

また、Message に関連付けられた WebSocket セッションを見つけ、それをメッセージとともにサブプロトコルハンドラーに渡して、アプリケーションからクライアントにメッセージを送り返す MessageHandler の実装。

導入:
4.0
作成者:
Rossen Stoyanchev, Juergen Hoeller, Andy Wilkinson, Artem Bilan
  • コンストラクターの詳細

    • SubProtocolWebSocketHandler

      public SubProtocolWebSocketHandler(MessageChannel clientInboundChannel, SubscribableChannel clientOutboundChannel)
      指定された受信および送信チャネル用に新しい SubProtocolWebSocketHandler を作成します。
      パラメーター:
      clientInboundChannel - 受信 MessageChannel
      clientOutboundChannel - 送信 MessageChannel
  • メソッドの詳細

    • setProtocolHandlers

      public void setProtocolHandlers(ListSE<SubProtocolHandler> protocolHandlers)
      WebSocket ハンドシェイクリクエストでクライアントがリクエストしたサブプロトコルに応じて、使用する 1 つ以上のハンドラーを構成します。
      パラメーター:
      protocolHandlers - 使用するサブプロトコルハンドラー
    • getProtocolHandlers

      public ListSE<SubProtocolHandler> getProtocolHandlers()
    • addProtocolHandler

      public void addProtocolHandler(SubProtocolHandler handler)
      サブプロトコルハンドラーを登録します。
    • getProtocolHandlerMap

      public MapSE<StringSE,SubProtocolHandler> getProtocolHandlerMap()
      プロトコル名をキーとするサブプロトコルを返します。
    • setDefaultProtocolHandler

      public void setDefaultProtocolHandler(@Nullable SubProtocolHandler defaultProtocolHandler)
      クライアントがサブプロトコルをリクエストしなかったときに使用するように SubProtocolHandler を設定します。
      パラメーター:
      defaultProtocolHandler - デフォルトのハンドラー
    • getDefaultProtocolHandler

      @Nullable public SubProtocolHandler getDefaultProtocolHandler()
      使用するデフォルトのサブプロトコルハンドラーを返します。
    • getSubProtocols

      public ListSE<StringSE> getSubProtocols()
      サポートされているすべてのプロトコルを返します。
      次で指定:
      インターフェース SubProtocolCapablegetSubProtocols 
    • setSendTimeLimit

      public void setSendTimeLimit(int sendTimeLimit)
      送信時間制限(ミリ秒)を指定します。
      関連事項:
    • getSendTimeLimit

      public int getSendTimeLimit()
      送信時間制限(ミリ秒)を返します。
    • setSendBufferSizeLimit

      public void setSendBufferSizeLimit(int sendBufferSizeLimit)
      バッファサイズの制限(バイト数)を指定します。
      関連事項:
    • getSendBufferSizeLimit

      public int getSendBufferSizeLimit()
      バッファサイズの制限(バイト数)を返します。
    • setTimeToFirstMessage

      public void setTimeToFirstMessage(int timeToFirstMessage)
      WebSocket 接続が確立されてから最初のサブプロトコルメッセージが受信されるまでの最大許容時間をミリ秒単位で設定します。

      このハンドラーは、サブプロトコルを使用する WebSocket 接続用です。クライアントが最初に少なくとも 1 つのサブプロトコルメッセージを送信することを期待します。そうでない場合は、接続がうまくいかないと想定します。プロキシの課題、遅いネットワーク、閉じることができます。

      デフォルトでは、これは 60,000 (1 分)に設定されています。

      パラメーター:
      timeToFirstMessage - ミリ秒単位で許可される最大時間
      導入:
      5.1
      関連事項:
      • checkSessions()
    • getTimeToFirstMessage

      public int getTimeToFirstMessage()
      WebSocket 接続の確立後、最初のサブプロトコルメッセージの前に許可される最大時間を返します。
      導入:
      5.1
    • setPhase

      public void setPhase(int phase)
      このハンドラーが実行されるフェーズを設定します。

      デフォルトでは、これは SmartLifecycle.DEFAULT_PHASE です。

      導入:
      6.1.4
    • getPhase

      public int getPhase()
      インターフェースからコピーされた説明: SmartLifecycle
      このライフサイクルオブジェクトが実行されるはずのフェーズを返します。

      デフォルトの実装は、通常の Lifecycle 実装の前に stop() コールバックを実行できるようにするために SmartLifecycle.DEFAULT_PHASE を返します。

      次で指定:
      インターフェース PhasedgetPhase 
      次で指定:
      インターフェース SmartLifecyclegetPhase 
      関連事項:
    • getStatsInfo

      public StringSE getStatsInfo()
      内部状態とカウンタを説明する文字列を返します。事実上、getStats() 上の toString()
    • getStats

      さまざまなセッションカウンターを持つ構造化オブジェクトを返します。
      導入:
      5.2
    • start

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

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

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

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

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

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

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

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

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

      public final void stop(RunnableSE callback)
      インターフェースからコピーされた説明: SmartLifecycle
      Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。

      提供されたコールバックは、LifecycleProcessor によって使用され、共通のシャットダウン順序値を持つすべてのコンポーネントの順序付けられた、潜在的に同時のシャットダウンをサポートします。コールバック は、SmartLifecycle コンポーネントが実際に停止した後に実行する必要があります。

      LifecycleProcessor は、stop メソッドのこのバリアントのみを呼び出します。つまり、SmartLifecycle 実装では、このメソッドの実装内に明示的に委譲されない限り、Lifecycle.stop() は呼び出されません。

      デフォルトの実装は Lifecycle.stop() に委譲し、呼び出しスレッドで指定されたコールバックをすぐにトリガーします。2 つの間に同期がないことに注意してください。カスタム実装では、少なくとも共通のライフサイクルモニター(存在する場合)内に同じ手順を入れたい場合があります。

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

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

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

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

      public void afterConnectionEstablished(WebSocketSession session) throws ExceptionSE
      インターフェースからコピーされた説明: WebSocketHandler
      WebSocket ネゴシエーションが成功し、WebSocket 接続が開かれ、使用可能な状態になった後に呼び出されます。
      次で指定:
      インターフェース WebSocketHandlerafterConnectionEstablished 
      例外:
      ExceptionSE - このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。
    • handleMessage

      public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws ExceptionSE
      WebSocket クライアントからの受信メッセージを処理します。
      次で指定:
      インターフェース WebSocketHandlerhandleMessage 
      例外:
      ExceptionSE - このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。
    • handleMessage

      public void handleMessage(Message<?> message) throws MessagingException
      WebSocket クライアントへの発信 Spring メッセージを処理します。
      次で指定:
      インターフェース MessageHandlerhandleMessage 
      パラメーター:
      message - 処理するメッセージ
      例外:
      MessagingException - ハンドラーがメッセージの処理に失敗した場合
    • handleTransportError

      public void handleTransportError(WebSocketSession session, ThrowableSE exception) throws ExceptionSE
      インターフェースからコピーされた説明: WebSocketHandler
      基礎となる WebSocket メッセージトランスポートからのエラーを処理します。
      次で指定:
      インターフェース WebSocketHandlerhandleTransportError 
      例外:
      ExceptionSE - このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。
    • afterConnectionClosed

      public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws ExceptionSE
      インターフェースからコピーされた説明: WebSocketHandler
      WebSocket 接続がどちらかの側で閉じられた後、または転送エラーが発生した後に呼び出されます。セッションは技術的にはまだ開いている可能性がありますが、基盤となる実装によっては、この時点でメッセージを送信することはお勧めできません。おそらく成功しません。
      次で指定:
      インターフェース WebSocketHandlerafterConnectionClosed 
      例外:
      ExceptionSE - このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。
    • supportsPartialMessages

      public boolean supportsPartialMessages()
      インターフェースからコピーされた説明: WebSocketHandler
      WebSocketHandler が部分的なメッセージを処理するかどうか。このフラグが true に設定され、基礎となる WebSocket サーバーが部分メッセージをサポートする場合、大きな WebSocket メッセージまたは不明なサイズのメッセージが分割され、WebSocketHandler.handleMessage(WebSocketSession, WebSocketMessage) への複数の呼び出しで受信される可能性があります。フラグ WebSocketMessage.isLast() は、メッセージが部分的であるかどうか、およびメッセージが最後の部分であるかどうかを示します。
      次で指定:
      インターフェース WebSocketHandlersupportsPartialMessages 
    • decorateSession

      protected WebSocketSession decorateSession(WebSocketSession session)
      必要に応じて、指定された WebSocketSession を装飾します。

      デフォルトの実装では、構成された send-time limit および buffer-size limit を使用して ConcurrentWebSocketSessionDecorator を構築します。

      パラメーター:
      session - 元の WebSocketSession
      戻り値:
      装飾された WebSocketSession、または潜在的に指定されたセッションをそのまま
      導入:
      4.3.13
    • findProtocolHandler

      protected final SubProtocolHandler findProtocolHandler(WebSocketSession session)
      指定されたセッションの SubProtocolHandler を見つけます。
      パラメーター:
      session - ハンドラーを見つける WebSocketSession 
    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString