クラス SubProtocolWebSocketHandler
- 実装されているすべてのインターフェース:
Lifecycle、Phased、SmartLifecycle、MessageHandler、SubProtocolCapable、WebSocketHandler
MessageChannel とともに、受信 WebSocket メッセージを SubProtocolHandler に委譲する WebSocketHandler の実装。 また、Message に関連付けられた WebSocket セッションを見つけ、それをメッセージとともにサブプロトコルハンドラーに渡して、アプリケーションからクライアントにメッセージを送り返す MessageHandler の実装。
- 導入:
- 4.0
- 作成者:
- Rossen Stoyanchev, Juergen Hoeller, Andy Wilkinson, Artem Bilan
ネストされたクラスの要約
ネストされたクラスフィールドのサマリー
インターフェース org.springframework.context.SmartLifecycle から継承されたフィールド
DEFAULT_PHASEコンストラクターの概要
コンストラクターコンストラクター説明SubProtocolWebSocketHandler(MessageChannel clientInboundChannel, SubscribableChannel clientOutboundChannel) 指定された受信および送信チャネル用に新しいSubProtocolWebSocketHandlerを作成します。メソッドのサマリー
修飾子と型メソッド説明voidaddProtocolHandler(SubProtocolHandler handler) サブプロトコルハンドラーを登録します。voidafterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) WebSocket 接続がいずれかの側で閉じられた後、またはトランスポートエラーが発生した後に呼び出されます。voidWebSocket ネゴシエーションが成功し、WebSocket 接続が開かれ、使用可能な状態になった後に呼び出されます。protected WebSocketSessiondecorateSession(WebSocketSession session) 必要に応じて、指定されたWebSocketSessionを装飾します。protected final SubProtocolHandlerfindProtocolHandler(WebSocketSession session) 指定されたセッションのSubProtocolHandlerを見つけます。使用するデフォルトのサブプロトコルハンドラーを返します。intgetPhase()このライフサイクルオブジェクトが実行されるはずのフェーズを返します。プロトコル名をキーとするサブプロトコルを返します。intバッファサイズの制限(バイト数)を返します。int送信時間制限(ミリ秒)を返します。getStats()さまざまなセッションカウンターを持つ構造化オブジェクトを返します。内部状態とカウンタを記述する文字列を返します。サポートされているすべてのプロトコルを返します。intWebSocket 接続の確立後、最初のサブプロトコルメッセージの前に許可される最大時間を返します。voidhandleMessage(Message<?> message) WebSocket クライアントへの発信 Spring メッセージを処理します。voidhandleMessage(WebSocketSession session, WebSocketMessage<?> message) WebSocket クライアントからの受信メッセージを処理します。voidhandleTransportError(WebSocketSession session, ThrowableSE exception) 基礎となる WebSocket メッセージトランスポートからのエラーを処理します。final booleanこのコンポーネントが現在実行されているかどうかを確認します。voidsetDefaultProtocolHandler(SubProtocolHandler defaultProtocolHandler) クライアントがサブプロトコルをリクエストしなかったときに使用するようにSubProtocolHandlerを設定します。voidsetPhase(int phase) このハンドラーが実行されるフェーズを設定します。voidsetProtocolHandlers(ListSE<SubProtocolHandler> protocolHandlers) WebSocket ハンドシェイクリクエストでクライアントがリクエストしたサブプロトコルに応じて、使用する 1 つ以上のハンドラーを構成します。voidsetSendBufferSizeLimit(int sendBufferSizeLimit) バッファサイズの制限(バイト数)を指定します。voidsetSendTimeLimit(int sendTimeLimit) 送信時間制限(ミリ秒)を指定します。voidsetTimeToFirstMessage(int timeToFirstMessage) WebSocket 接続が確立されてから最初のサブプロトコルメッセージが受信されるまでの最大許容時間をミリ秒単位で設定します。final voidstart()このコンポーネントを起動します。final voidstop()このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。final voidstop(RunnableSE callback) Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。booleanWebSocketHandler が部分的なメッセージを処理するかどうか。toString()クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSEインターフェース org.springframework.context.SmartLifecycle から継承されたメソッド
isAutoStartup
コンストラクターの詳細
SubProtocolWebSocketHandler
public SubProtocolWebSocketHandler(MessageChannel clientInboundChannel, SubscribableChannel clientOutboundChannel) 指定された受信および送信チャネル用に新しいSubProtocolWebSocketHandlerを作成します。- パラメーター:
clientInboundChannel- 受信MessageChannelclientOutboundChannel- 送信MessageChannel
メソッドの詳細
setProtocolHandlers
WebSocket ハンドシェイクリクエストでクライアントがリクエストしたサブプロトコルに応じて、使用する 1 つ以上のハンドラーを構成します。- パラメーター:
protocolHandlers- 使用するサブプロトコルハンドラー
getProtocolHandlers
addProtocolHandler
サブプロトコルハンドラーを登録します。getProtocolHandlerMap
プロトコル名をキーとするサブプロトコルを返します。setDefaultProtocolHandler
クライアントがサブプロトコルをリクエストしなかったときに使用するようにSubProtocolHandlerを設定します。- パラメーター:
defaultProtocolHandler- デフォルトのハンドラー
getDefaultProtocolHandler
使用するデフォルトのサブプロトコルハンドラーを返します。getSubProtocols
サポートされているすべてのプロトコルを返します。- 次で指定:
- インターフェース
SubProtocolCapableのgetSubProtocols
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ですが、@EnableWebSocketMessageBroker構成では 0 に設定されます。- 導入:
- 6.1.4
getPhase
public int getPhase()インターフェースからコピーされた説明:SmartLifecycleこのライフサイクルオブジェクトが実行されるはずのフェーズを返します。デフォルトの実装は、通常の
Lifecycle実装の前にstop()コールバックを実行できるようにするためにSmartLifecycle.DEFAULT_PHASEを返します。- 次で指定:
- インターフェース
PhasedのgetPhase - 次で指定:
- インターフェース
SmartLifecycleのgetPhase - 関連事項:
getStatsInfo
内部状態とカウンタを説明する文字列を返します。事実上、getStats()上のtoString()。getStats
さまざまなセッションカウンターを持つ構造化オブジェクトを返します。- 導入:
- 5.2
start
public final void start()インターフェースからコピーされた説明:Lifecycleこのコンポーネントを起動します。コンポーネントがすでに実行されている場合は、例外をスローしないでください。
コンテナーの場合、これにより、自動起動しないコンポーネントも含め、適用されるすべてのコンポーネントにハードスタートシグナルが伝播されます。
stop
public final void stop()インターフェースからコピーされた説明:Lifecycleこのメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。非同期停止動作が必要な場合は、SmartLifecycleとそのstop(Runnable)バリアントの実装を検討してください。この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、
LifecycleBean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の Bean の destroy メソッドが、停止シグナルを事前に考慮することなく呼び出されます。コンポーネントが実行されていない(まだ開始されていない)場合は、例外をスローしないでください。
コンテナーの場合、これは停止シグナルを適用するすべてのコンポーネントに伝播します。
stop
インターフェースからコピーされた説明:SmartLifecycleLifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。提供されたコールバックは、
LifecycleProcessorによって使用され、共通のシャットダウン順序値を持つすべてのコンポーネントの順序付けられた、潜在的に同時のシャットダウンをサポートします。コールバック は、SmartLifecycleコンポーネントが実際に停止した後に実行する必要があります。LifecycleProcessorは、stopメソッドのこのバリアントのみを呼び出します。つまり、SmartLifecycle実装では、このメソッドの実装内に明示的に委譲されない限り、Lifecycle.stop()は呼び出されません。デフォルトの実装は
Lifecycle.stop()に委譲し、呼び出しスレッドで指定されたコールバックをすぐにトリガーします。2 つの間に同期がないことに注意してください。カスタム実装では、少なくとも共通のライフサイクルモニター(存在する場合)内に同じ手順を入れたい場合があります。- 次で指定:
- インターフェース
SmartLifecycleのstop - 関連事項:
isRunning
public final boolean isRunning()インターフェースからコピーされた説明:Lifecycleこのコンポーネントが現在実行されているかどうかを確認します。コンテナーの場合、これは、適用されるすべてのコンポーネントが現在実行されている場合にのみ、
trueを返します。afterConnectionEstablished
インターフェースからコピーされた説明:WebSocketHandlerWebSocket ネゴシエーションが成功し、WebSocket 接続が開かれ、使用可能な状態になった後に呼び出されます。- 次で指定:
- インターフェース
WebSocketHandlerのafterConnectionEstablished - 例外:
ExceptionSE- このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。
handleMessage
WebSocket クライアントからの受信メッセージを処理します。- 次で指定:
- インターフェース
WebSocketHandlerのhandleMessage - 例外:
ExceptionSE- このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。
handleMessage
WebSocket クライアントへの発信 Spring メッセージを処理します。- 次で指定:
- インターフェース
MessageHandlerのhandleMessage - パラメーター:
message- 処理するメッセージ- 例外:
MessagingException- ハンドラーがメッセージの処理に失敗した場合
handleTransportError
public void handleTransportError(WebSocketSession session, ThrowableSE exception) throws ExceptionSE インターフェースからコピーされた説明:WebSocketHandler基礎となる WebSocket メッセージトランスポートからのエラーを処理します。- 次で指定:
- インターフェース
WebSocketHandlerのhandleTransportError - 例外:
ExceptionSE- このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。
afterConnectionClosed
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws ExceptionSE インターフェースからコピーされた説明:WebSocketHandlerWebSocket 接続がどちらかの側で閉じられた後、または転送エラーが発生した後に呼び出されます。セッションは技術的にはまだ開いている可能性がありますが、基盤となる実装によっては、この時点でメッセージを送信することはお勧めできません。おそらく成功しません。- 次で指定:
- インターフェース
WebSocketHandlerのafterConnectionClosed - 例外:
ExceptionSE- このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。
supportsPartialMessages
public boolean supportsPartialMessages()インターフェースからコピーされた説明:WebSocketHandlerWebSocketHandler が部分的なメッセージを処理するかどうか。このフラグがtrueに設定され、基礎となる WebSocket サーバーが部分メッセージをサポートする場合、大きな WebSocket メッセージまたは不明なサイズのメッセージが分割され、WebSocketHandler.handleMessage(WebSocketSession, WebSocketMessage)への複数の呼び出しで受信される可能性があります。フラグWebSocketMessage.isLast()は、メッセージが部分的であるかどうか、およびメッセージが最後の部分であるかどうかを示します。- 次で指定:
- インターフェース
WebSocketHandlerのsupportsPartialMessages
decorateSession
必要に応じて、指定されたWebSocketSessionを装飾します。デフォルトの実装では、構成された
send-time limitおよびbuffer-size limitを使用してConcurrentWebSocketSessionDecoratorを構築します。- パラメーター:
session- 元のWebSocketSession- 戻り値:
- 装飾された
WebSocketSession、または潜在的に指定されたセッションをそのまま - 導入:
- 4.3.13
findProtocolHandler
指定されたセッションのSubProtocolHandlerを見つけます。- パラメーター:
session- ハンドラーを見つけるWebSocketSession
toString