public class SubProtocolWebSocketHandler extends ObjectSE implements WebSocketHandler, SubProtocolCapable, MessageHandler, SmartLifecycle
MessageChannel
とともに、受信 WebSocket メッセージを SubProtocolHandler
に委譲する WebSocketHandler
の実装。 また、Message
に関連付けられた WebSocket セッションを見つけ、それをメッセージとともにサブプロトコルハンドラーに渡して、アプリケーションからクライアントにメッセージを送り返す MessageHandler
の実装。
修飾子と型 | クラスと説明 |
---|---|
static interface | SubProtocolWebSocketHandler.Stats セッションカウンターへのアクセスの契約。 |
DEFAULT_PHASE
コンストラクターと説明 |
---|
SubProtocolWebSocketHandler(MessageChannel clientInboundChannel, SubscribableChannel clientOutboundChannel) 指定された受信および送信チャネル用に新しい SubProtocolWebSocketHandler を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
void | addProtocolHandler(SubProtocolHandler handler) サブプロトコルハンドラーを登録します。 |
void | afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) WebSocket 接続がいずれかの側で閉じられた後、またはトランスポートエラーが発生した後に呼び出されます。 |
void | afterConnectionEstablished(WebSocketSession session) WebSocket ネゴシエーションが成功し、WebSocket 接続が開かれ、使用可能な状態になった後に呼び出されます。 |
protected WebSocketSession | decorateSession(WebSocketSession session) 必要に応じて、指定された WebSocketSession を装飾します。 |
protected SubProtocolHandler | findProtocolHandler(WebSocketSession session) 指定されたセッションの SubProtocolHandler を見つけます。 |
SubProtocolHandler | getDefaultProtocolHandler() 使用するデフォルトのサブプロトコルハンドラーを返します。 |
MapSE<StringSE, SubProtocolHandler> | getProtocolHandlerMap() プロトコル名をキーとするサブプロトコルを返します。 |
ListSE<SubProtocolHandler> | getProtocolHandlers() |
int | getSendBufferSizeLimit() バッファサイズの制限(バイト数)を返します。 |
int | getSendTimeLimit() 送信時間制限(ミリ秒)を返します。 |
SubProtocolWebSocketHandler.Stats | getStats() さまざまなセッションカウンターを持つ構造化オブジェクトを返します。 |
StringSE | getStatsInfo() 内部状態とカウンタを記述する文字列を返します。 |
ListSE<StringSE> | getSubProtocols() サポートされているすべてのプロトコルを返します。 |
int | getTimeToFirstMessage() WebSocket 接続の確立後、最初のサブプロトコルメッセージの前に許可される最大時間を返します。 |
void | handleMessage(Message<?> message) WebSocket クライアントへの発信 Spring メッセージを処理します。 |
void | handleMessage(WebSocketSession session, WebSocketMessage<?> message) WebSocket クライアントからの受信メッセージを処理します。 |
void | handleTransportError(WebSocketSession session, ThrowableSE exception) 基礎となる WebSocket メッセージトランスポートからのエラーを処理します。 |
boolean | isRunning() このコンポーネントが現在実行されているかどうかを確認します。 |
void | setDefaultProtocolHandler(SubProtocolHandler defaultProtocolHandler) クライアントがサブプロトコルをリクエストしなかったときに使用するように SubProtocolHandler を設定します。 |
void | setProtocolHandlers(ListSE<SubProtocolHandler> protocolHandlers) WebSocket ハンドシェイクリクエストでクライアントがリクエストしたサブプロトコルに応じて、使用する 1 つ以上のハンドラーを構成します。 |
void | setSendBufferSizeLimit(int sendBufferSizeLimit) バッファサイズの制限(バイト数)を指定します。 |
void | setSendTimeLimit(int sendTimeLimit) 送信時間制限(ミリ秒)を指定します。 |
void | setTimeToFirstMessage(int timeToFirstMessage) WebSocket 接続が確立されてから最初のサブプロトコルメッセージが受信されるまでの最大許容時間をミリ秒単位で設定します。 |
void | start() このコンポーネントを起動します。 |
void | stop() このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。 |
void | stop(RunnableSE callback) Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。 |
boolean | supportsPartialMessages() WebSocketHandler が部分的なメッセージを処理するかどうか。 |
StringSE | toString() |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
getPhase, isAutoStartup
public SubProtocolWebSocketHandler(MessageChannel clientInboundChannel, SubscribableChannel clientOutboundChannel)
SubProtocolWebSocketHandler
を作成します。clientInboundChannel
- 受信 MessageChannel
clientOutboundChannel
- 送信 MessageChannel
public void setProtocolHandlers(ListSE<SubProtocolHandler> protocolHandlers)
protocolHandlers
- 使用するサブプロトコルハンドラー public ListSE<SubProtocolHandler> getProtocolHandlers()
public void addProtocolHandler(SubProtocolHandler handler)
public MapSE<StringSE,SubProtocolHandler> getProtocolHandlerMap()
public void setDefaultProtocolHandler(@Nullable SubProtocolHandler defaultProtocolHandler)
SubProtocolHandler
を設定します。defaultProtocolHandler
- デフォルトのハンドラー @Nullable public SubProtocolHandler getDefaultProtocolHandler()
public ListSE<StringSE> getSubProtocols()
SubProtocolCapable
の getSubProtocols
public void setSendTimeLimit(int sendTimeLimit)
public int getSendTimeLimit()
public void setSendBufferSizeLimit(int sendBufferSizeLimit)
public int getSendBufferSizeLimit()
public void setTimeToFirstMessage(int timeToFirstMessage)
このハンドラーは、サブプロトコルを使用する WebSocket 接続用です。クライアントが最初に少なくとも 1 つのサブプロトコルメッセージを送信することを期待します。そうでない場合は、接続がうまくいかないと想定します。プロキシの課題、遅いネットワーク、閉じることができます。
デフォルトでは、これは 60,000
(1 分)に設定されています。
timeToFirstMessage
- ミリ秒単位で許可される最大時間 checkSessions()
public int getTimeToFirstMessage()
public StringSE getStatsInfo()
getStats()
上の toString()
。public SubProtocolWebSocketHandler.Stats getStats()
public final void start()
Lifecycle
コンポーネントがすでに実行されている場合は、例外をスローしないでください。
コンテナーの場合、これは適用されるすべてのコンポーネントに開始信号を伝播します。
Lifecycle
の start
SmartLifecycle.isAutoStartup()
public final void stop()
Lifecycle
SmartLifecycle
とその stop(Runnable)
バリアントの実装を検討してください。 この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、Lifecycle
Bean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の Bean の destroy メソッドが、停止信号を事前に考慮することなく呼び出されます。
コンポーネントが実行されていない(まだ開始されていない)場合は、例外をスローしないでください。
コンテナーの場合、これは停止信号を適用するすべてのコンポーネントに伝播します。
Lifecycle
の stop
SmartLifecycle.stop(Runnable)
, DisposableBean.destroy()
public final void stop(RunnableSE callback)
SmartLifecycle
提供されたコールバックは、LifecycleProcessor
によって使用され、共通のシャットダウン順序値を持つすべてのコンポーネントの順序付けられた、潜在的に同時のシャットダウンをサポートします。コールバック は、SmartLifecycle
コンポーネントが実際に停止した後に実行する必要があります。
LifecycleProcessor
は、stop
メソッドのこのバリアントのみを呼び出します。つまり、SmartLifecycle
実装では、このメソッドの実装内に明示的に委譲されない限り、Lifecycle.stop()
は呼び出されません。
デフォルトの実装は Lifecycle.stop()
に委譲し、呼び出しスレッドで指定されたコールバックをすぐにトリガーします。2 つの間に同期がないことに注意してください。カスタム実装では、少なくとも共通のライフサイクルモニター(存在する場合)内に同じ手順を入れたい場合があります。
SmartLifecycle
の stop
Lifecycle.stop()
, SmartLifecycle.getPhase()
public final boolean isRunning()
Lifecycle
コンテナーの場合、これは、適用されるすべてのコンポーネントが現在実行されている場合にのみ、true
を返します。
public void afterConnectionEstablished(WebSocketSession session) throws ExceptionSE
WebSocketHandler
WebSocketHandler
の afterConnectionEstablished
ExceptionSE
- このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws ExceptionSE
WebSocketHandler
の handleMessage
ExceptionSE
- このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。public void handleMessage(Message<?> message) throws MessagingException
MessageHandler
の handleMessage
message
- 処理するメッセージ MessagingException
- ハンドラーがメッセージの処理に失敗した場合 public void handleTransportError(WebSocketSession session, ThrowableSE exception) throws ExceptionSE
WebSocketHandler
WebSocketHandler
の handleTransportError
ExceptionSE
- このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws ExceptionSE
WebSocketHandler
WebSocketHandler
の afterConnectionClosed
ExceptionSE
- このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。public boolean supportsPartialMessages()
WebSocketHandler
true
に設定され、基礎となる WebSocket サーバーが部分メッセージをサポートする場合、大きな WebSocket メッセージまたは不明なサイズのメッセージが分割され、WebSocketHandler.handleMessage(WebSocketSession, WebSocketMessage)
への複数の呼び出しで受信される可能性があります。フラグ WebSocketMessage.isLast()
は、メッセージが部分的であるかどうか、およびメッセージが最後の部分であるかどうかを示します。WebSocketHandler
の supportsPartialMessages
protected WebSocketSession decorateSession(WebSocketSession session)
WebSocketSession
を装飾します。 デフォルトの実装では、構成された send-time limit
および buffer-size limit
を使用して ConcurrentWebSocketSessionDecorator
を構築します。
session
- 元の WebSocketSession
WebSocketSession
、または潜在的に指定されたセッションをそのまま protected final SubProtocolHandler findProtocolHandler(WebSocketSession session)
SubProtocolHandler
を見つけます。session
- ハンドラーを見つける WebSocketSession
public StringSE toString()
ObjectSE
の toStringSE