クラス 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
を作成します。メソッドのサマリー
修飾子と型メソッド説明void
addProtocolHandler
(SubProtocolHandler handler) サブプロトコルハンドラーを登録します。void
afterConnectionClosed
(WebSocketSession session, CloseStatus closeStatus) WebSocket 接続がいずれかの側で閉じられた後、またはトランスポートエラーが発生した後に呼び出されます。void
WebSocket ネゴシエーションが成功し、WebSocket 接続が開かれ、使用可能な状態になった後に呼び出されます。protected WebSocketSession
decorateSession
(WebSocketSession session) 必要に応じて、指定されたWebSocketSession
を装飾します。protected final SubProtocolHandler
findProtocolHandler
(WebSocketSession session) 指定されたセッションのSubProtocolHandler
を見つけます。使用するデフォルトのサブプロトコルハンドラーを返します。int
getPhase()
このライフサイクルオブジェクトが実行されるはずのフェーズを返します。プロトコル名をキーとするサブプロトコルを返します。int
バッファサイズの制限(バイト数)を返します。int
送信時間制限(ミリ秒)を返します。getStats()
さまざまなセッションカウンターを持つ構造化オブジェクトを返します。内部状態とカウンタを記述する文字列を返します。サポートされているすべてのプロトコルを返します。int
WebSocket 接続の確立後、最初のサブプロトコルメッセージの前に許可される最大時間を返します。void
handleMessage
(Message<?> message) WebSocket クライアントへの発信 Spring メッセージを処理します。void
handleMessage
(WebSocketSession session, WebSocketMessage<?> message) WebSocket クライアントからの受信メッセージを処理します。void
handleTransportError
(WebSocketSession session, ThrowableSE exception) 基礎となる WebSocket メッセージトランスポートからのエラーを処理します。final boolean
このコンポーネントが現在実行されているかどうかを確認します。void
setDefaultProtocolHandler
(SubProtocolHandler defaultProtocolHandler) クライアントがサブプロトコルをリクエストしなかったときに使用するようにSubProtocolHandler
を設定します。void
setPhase
(int phase) このハンドラーが実行されるフェーズを設定します。void
setProtocolHandlers
(ListSE<SubProtocolHandler> protocolHandlers) WebSocket ハンドシェイクリクエストでクライアントがリクエストしたサブプロトコルに応じて、使用する 1 つ以上のハンドラーを構成します。void
setSendBufferSizeLimit
(int sendBufferSizeLimit) バッファサイズの制限(バイト数)を指定します。void
setSendTimeLimit
(int sendTimeLimit) 送信時間制限(ミリ秒)を指定します。void
setTimeToFirstMessage
(int timeToFirstMessage) WebSocket 接続が確立されてから最初のサブプロトコルメッセージが受信されるまでの最大許容時間をミリ秒単位で設定します。final void
start()
このコンポーネントを起動します。final void
stop()
このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。final void
stop
(RunnableSE callback) Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。boolean
WebSocketHandler が部分的なメッセージを処理するかどうか。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
- 受信MessageChannel
clientOutboundChannel
- 送信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
です。- 導入:
- 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)
バリアントの実装を検討してください。この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、
Lifecycle
Bean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の Bean の destroy メソッドが、停止シグナルを事前に考慮することなく呼び出されます。コンポーネントが実行されていない(まだ開始されていない)場合は、例外をスローしないでください。
コンテナーの場合、これは停止シグナルを適用するすべてのコンポーネントに伝播します。
stop
インターフェースからコピーされた説明:SmartLifecycle
Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。提供されたコールバックは、
LifecycleProcessor
によって使用され、共通のシャットダウン順序値を持つすべてのコンポーネントの順序付けられた、潜在的に同時のシャットダウンをサポートします。コールバック は、SmartLifecycle
コンポーネントが実際に停止した後に実行する必要があります。LifecycleProcessor
は、stop
メソッドのこのバリアントのみを呼び出します。つまり、SmartLifecycle
実装では、このメソッドの実装内に明示的に委譲されない限り、Lifecycle.stop()
は呼び出されません。デフォルトの実装は
Lifecycle.stop()
に委譲し、呼び出しスレッドで指定されたコールバックをすぐにトリガーします。2 つの間に同期がないことに注意してください。カスタム実装では、少なくとも共通のライフサイクルモニター(存在する場合)内に同じ手順を入れたい場合があります。- 次で指定:
- インターフェース
SmartLifecycle
のstop
- 関連事項:
isRunning
public final boolean isRunning()インターフェースからコピーされた説明:Lifecycle
このコンポーネントが現在実行されているかどうかを確認します。コンテナーの場合、これは、適用されるすべてのコンポーネントが現在実行されている場合にのみ、
true
を返します。afterConnectionEstablished
インターフェースからコピーされた説明:WebSocketHandler
WebSocket ネゴシエーションが成功し、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 インターフェースからコピーされた説明:WebSocketHandler
WebSocket 接続がどちらかの側で閉じられた後、または転送エラーが発生した後に呼び出されます。セッションは技術的にはまだ開いている可能性がありますが、基盤となる実装によっては、この時点でメッセージを送信することはお勧めできません。おそらく成功しません。- 次で指定:
- インターフェース
WebSocketHandler
のafterConnectionClosed
- 例外:
ExceptionSE
- このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。
supportsPartialMessages
public boolean supportsPartialMessages()インターフェースからコピーされた説明:WebSocketHandler
WebSocketHandler が部分的なメッセージを処理するかどうか。このフラグが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