public class WebSocketTransportHandler extends AbstractTransportHandler implements SockJsSessionFactory, HandshakeHandler, Lifecycle, ServletContextAware
TransportHandler
。SockJsWebSocketHandler
および WebSocketServerSockJsSession
を使用して SockJS 処理を追加します。 また、HandshakeHandler
を実装して、SockJS URL "/websocket" での生の WebSocket 通信をサポートします。
logger
コンストラクターと説明 |
---|
WebSocketTransportHandler(HandshakeHandler handshakeHandler) |
修飾子と型 | メソッドと説明 |
---|---|
boolean | checkSessionType(SockJsSession session) 指定されたセッションの型がこの TransportHandler のトランスポート型と一致するかどうかを確認します。ここで、セッション ID とトランスポート型は SockJS URL から抽出されます。 |
AbstractSockJsSession | createSession(StringSE id, WebSocketHandler handler, MapSE<StringSE, ObjectSE> attrs) 新しい SockJS セッションを作成します。 |
boolean | doHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler handler, MapSE<StringSE, ObjectSE> attributes) ハンドシェイクを開始します。 |
HandshakeHandler | getHandshakeHandler() |
TransportType | getTransportType() このハンドラーでサポートされているトランスポート型を返します。 |
void | handleRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, SockJsSession wsSession) 指定されたリクエストを処理し、提供された WebSocketHandler にメッセージを委譲します。 |
boolean | isRunning() このコンポーネントが現在実行されているかどうかを確認します。 |
void | setServletContext(ServletContextEE servletContext) このオブジェクトが実行される ServletContext EE を設定します。 |
void | start() このコンポーネントを起動します。 |
void | stop() このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。 |
getServiceConfig, initialize
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public WebSocketTransportHandler(HandshakeHandler handshakeHandler)
public TransportType getTransportType()
TransportHandler
TransportHandler
の getTransportType
public HandshakeHandler getHandshakeHandler()
public void setServletContext(ServletContextEE servletContext)
ServletContextAware
ServletContext
EE を設定します。 通常の Bean プロパティの設定後、InitializingBean の afterPropertiesSet
またはカスタム init メソッドのような初期コールバックの前に呼び出されます。ApplicationContextAware の setApplicationContext
の後に呼び出されます。
ServletContextAware
の setServletContext
servletContext
- このオブジェクトによって使用される ServletContext オブジェクト InitializingBean.afterPropertiesSet()
, ApplicationContextAware.setApplicationContext(org.springframework.context.ApplicationContext)
public void start()
Lifecycle
コンポーネントがすでに実行されている場合は、例外をスローしないでください。
コンテナーの場合、これは適用されるすべてのコンポーネントに開始シグナルを伝播します。
Lifecycle
の start
SmartLifecycle.isAutoStartup()
public void stop()
Lifecycle
SmartLifecycle
とその stop(Runnable)
バリアントの実装を検討してください。 この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、Lifecycle
Bean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の Bean の destroy メソッドが、停止シグナルを事前に考慮することなく呼び出されます。
コンポーネントが実行されていない(まだ開始されていない)場合は、例外をスローしないでください。
コンテナーの場合、これは停止シグナルを適用するすべてのコンポーネントに伝播します。
Lifecycle
の stop
SmartLifecycle.stop(Runnable)
, DisposableBean.destroy()
public boolean isRunning()
Lifecycle
コンテナーの場合、これは、適用されるすべてのコンポーネントが現在実行されている場合にのみ、true
を返します。
public boolean checkSessionType(SockJsSession session)
TransportHandler
TransportHandler
のトランスポート型と一致するかどうかを確認します。ここで、セッション ID とトランスポート型は SockJS URL から抽出されます。TransportHandler
の checkSessionType
TransportHandler.handleRequest(org.springframework.http.server.ServerHttpRequest, org.springframework.http.server.ServerHttpResponse, org.springframework.web.socket.WebSocketHandler, org.springframework.web.socket.sockjs.transport.SockJsSession)
によって受け入れられる場合)は true
、そうでない場合は false
public AbstractSockJsSession createSession(StringSE id, WebSocketHandler handler, MapSE<StringSE,ObjectSE> attrs)
SockJsSessionFactory
SockJsSessionFactory
の createSession
id
- セッションの IDhandler
- 基礎となる WebSocketHandler
attrs
- ハンドシェイクリクエスト固有の属性 null
public void handleRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException
TransportHandler
WebSocketHandler
にメッセージを委譲します。TransportHandler
の handleRequest
request
- 現在のリクエスト response
- 現在のレスポンス wsHandler
- ターゲット WebSocketHandler (非 null
)wsSession
- SockJS セッション (非 null
)SockJsException
- SockJsService
に従ってリクエスト処理が失敗したときに発生します public boolean doHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler handler, MapSE<StringSE,ObjectSE> attributes) throws HandshakeFailureException
HandshakeHandler
HandshakeHandler
の doHandshake
request
- 現在のリクエスト response
- 現在のレスポンス handler
- WebSocket メッセージを処理するハンドラー。ハンドラーに接続ごとのライフサイクルを提供する方法については、PerConnectionWebSocketHandler
を参照してください。attributes
- WebSocket セッションに関連付ける HTTP ハンドシェイクの属性。指定された属性はコピーされ、元のマップは使用されません。HandshakeFailureException
- 内部の回復不可能なエラー(つまり、ハンドシェイクのネゴシエーションに失敗したのではなくサーバーエラー)が原因でハンドシェイク処理が完了しなかった場合にスローされます。