public class SubProtocolWebSocketHandler extends java.lang.Object implements WebSocketHandler, SubProtocolCapable, MessageHandler, SmartLifecycle
MessageChannel とともに、受信 WebSocket メッセージを SubProtocolHandler に委譲する WebSocketHandler の実装。 また、Message に関連付けられた WebSocket セッションを見つけ、それをメッセージとともにサブプロトコルハンドラーに渡して、アプリケーションからクライアントにメッセージを送り返す MessageHandler の実装。
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() 使用するデフォルトのサブプロトコルハンドラーを返します。 |
java.util.Map<java.lang.String,SubProtocolHandler> | getProtocolHandlerMap() プロトコル名をキーとするサブプロトコルを返します。 |
java.util.List<SubProtocolHandler> | getProtocolHandlers() |
int | getSendBufferSizeLimit() バッファサイズの制限(バイト数)を返します。 |
int | getSendTimeLimit() 送信時間制限(ミリ秒)を返します。 |
java.lang.String | getStatsInfo() 内部状態とカウンタを記述する文字列を返します。 |
java.util.List<java.lang.String> | getSubProtocols() サポートされているすべてのプロトコルを返します。 |
int | getTimeToFirstMessage()WebSocket 接続の確立後、最初のサブプロトコルメッセージの前に許可される最大時間を返します。 |
void | handleMessage(Message<?> message)WebSocket クライアントへの発信 Spring メッセージを処理します。 |
void | handleMessage(WebSocketSession session, WebSocketMessage<?> message)WebSocket クライアントからの受信メッセージを処理します。 |
void | handleTransportError(WebSocketSession session, java.lang.Throwable exception) 基礎となる WebSocket メッセージトランスポートからのエラーを処理します。 |
boolean | isRunning() このコンポーネントが現在実行されているかどうかを確認します。 |
void | setDefaultProtocolHandler(SubProtocolHandler defaultProtocolHandler) クライアントがサブプロトコルをリクエストしなかったときに使用するように SubProtocolHandler を設定します。 |
void | setProtocolHandlers(java.util.List<SubProtocolHandler> protocolHandlers)WebSocket ハンドシェイクリクエストでクライアントがリクエストしたサブプロトコルに応じて、使用する 1 つ以上のハンドラーを構成します。 |
void | setSendBufferSizeLimit(int sendBufferSizeLimit) バッファサイズの制限(バイト数)を指定します。 |
void | setSendTimeLimit(int sendTimeLimit) 送信時間制限(ミリ秒)を指定します。 |
void | setTimeToFirstMessage(int timeToFirstMessage)WebSocket 接続が確立されてから最初のサブプロトコルメッセージが受信されるまでの最大許容時間をミリ秒単位で設定します。 |
void | start() このコンポーネントを起動します。 |
void | stop() このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。 |
void | stop(java.lang.Runnable callback)Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。 |
boolean | supportsPartialMessages()WebSocketHandler が部分的なメッセージを処理するかどうか。 |
java.lang.String | toString() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetPhase, isAutoStartuppublic SubProtocolWebSocketHandler(MessageChannel clientInboundChannel, SubscribableChannel clientOutboundChannel)
SubProtocolWebSocketHandler を作成します。clientInboundChannel - 受信 MessageChannelclientOutboundChannel - 送信 MessageChannelpublic void setProtocolHandlers(java.util.List<SubProtocolHandler> protocolHandlers)
protocolHandlers - 使用するサブプロトコルハンドラー public java.util.List<SubProtocolHandler> getProtocolHandlers()
public void addProtocolHandler(SubProtocolHandler handler)
public java.util.Map<java.lang.String,SubProtocolHandler> getProtocolHandlerMap()
public void setDefaultProtocolHandler(@Nullable SubProtocolHandler defaultProtocolHandler)
SubProtocolHandler を設定します。defaultProtocolHandler - デフォルトのハンドラー @Nullable public SubProtocolHandler getDefaultProtocolHandler()
public java.util.List<java.lang.String> 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 java.lang.String getStatsInfo()
public final void start()
Lifecycleコンポーネントがすでに実行されている場合は、例外をスローしないでください。
コンテナーの場合、これは適用されるすべてのコンポーネントに開始シグナルを伝播します。
Lifecycle 内の start SmartLifecycle.isAutoStartup()public final void stop()
LifecycleSmartLifecycle とその stop(Runnable) バリアントの実装を検討してください。 この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、Lifecycle Bean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の Bean の destroy メソッドが、停止シグナルを事前に考慮することなく呼び出されます。
コンポーネントが実行されていない(まだ開始されていない)場合は、例外をスローしないでください。
コンテナーの場合、これは停止シグナルを適用するすべてのコンポーネントに伝播します。
Lifecycle 内の stop SmartLifecycle.stop(Runnable), DisposableBean.destroy()public final void stop(java.lang.Runnable 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 java.lang.Exception
WebSocketHandlerWebSocketHandler 内の afterConnectionEstablished java.lang.Exception - このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws java.lang.Exception
WebSocketHandler 内の handleMessage java.lang.Exception - このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。public void handleMessage(Message<?> message) throws MessagingException
MessageHandler 内の handleMessage message - 処理するメッセージ MessagingException - ハンドラーがメッセージの処理に失敗した場合 public void handleTransportError(WebSocketSession session, java.lang.Throwable exception) throws java.lang.Exception
WebSocketHandlerWebSocketHandler 内の handleTransportError java.lang.Exception - このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws java.lang.Exception
WebSocketHandlerWebSocketHandler 内の afterConnectionClosed java.lang.Exception - このメソッドは例外を処理または伝播できます。詳細については、クラスレベルの Javadoc を参照してください。public boolean supportsPartialMessages()
WebSocketHandlertrue に設定され、基礎となる WebSocket サーバーが部分メッセージをサポートする場合、大きな WebSocket メッセージまたは不明なサイズのメッセージが分割され、WebSocketHandler.handleMessage(WebSocketSession, WebSocketMessage) への複数の呼び出しで受信される可能性があります。フラグ WebSocketMessage.isLast() は、メッセージが部分的であるかどうか、およびメッセージが最後の部分であるかどうかを示します。WebSocketHandler 内の supportsPartialMessages protected WebSocketSession decorateSession(WebSocketSession session)
WebSocketSession を装飾します。 デフォルトの実装では、構成された send-time limit および buffer-size limit を使用して ConcurrentWebSocketSessionDecorator を構築します。
session - 元の WebSocketSessionWebSocketSession、または潜在的に指定されたセッションをそのまま protected final SubProtocolHandler findProtocolHandler(WebSocketSession session)
SubProtocolHandler を見つけます。session - ハンドラーを見つける WebSocketSession public java.lang.String toString()
java.lang.Object の toString