public class SubProtocolWebSocketHandler extends Object implements WebSocketHandler, MessageHandler
WebSocketHandler that delegates messages to a SubProtocolHandler
based on the sub-protocol value requested by the client through the
Sec-WebSocket-Protocol request header A default handler can also be configured
to use if the client does not request a specific sub-protocol.| Constructor and Description |
|---|
SubProtocolWebSocketHandler(MessageChannel outputChannel) |
| Modifier and Type | Method and Description |
|---|---|
void |
addProtocolHandler(SubProtocolHandler handler)
Register a sub-protocol handler.
|
void |
afterConnectionClosed(WebSocketSession session,
CloseStatus closeStatus)
Invoked after the WebSocket connection has been closed by either side, or after a
transport error has occurred.
|
void |
afterConnectionEstablished(WebSocketSession session)
Invoked after WebSocket negotiation has succeeded and the WebSocket connection is
opened and ready for use.
|
protected SubProtocolHandler |
findProtocolHandler(WebSocketSession session) |
SubProtocolHandler |
getDefaultProtocolHandler() |
Map<String,SubProtocolHandler> |
getProtocolHandlers() |
Set<String> |
getSupportedProtocols()
Return all supported protocols.
|
void |
handleMessage(Message<?> message)
Handles the message if possible.
|
void |
handleMessage(WebSocketSession session,
WebSocketMessage<?> message)
Invoked when a new WebSocket message arrives.
|
void |
handleTransportError(WebSocketSession session,
Throwable exception)
Handle an error from the underlying WebSocket message transport.
|
void |
setDefaultProtocolHandler(SubProtocolHandler defaultProtocolHandler)
Set the
SubProtocolHandler to use when the client did not request a
sub-protocol. |
void |
setProtocolHandlers(List<SubProtocolHandler> protocolHandlers)
Configure one or more handlers to use depending on the sub-protocol requested by
the client in the WebSocket handshake request.
|
boolean |
supportsPartialMessages()
Whether the WebSocketHandler handles partial messages.
|
public SubProtocolWebSocketHandler(MessageChannel outputChannel)
outputChannel - public void setProtocolHandlers(List<SubProtocolHandler> protocolHandlers)
protocolHandlers - the sub-protocol handlers to usepublic void addProtocolHandler(SubProtocolHandler handler)
public Map<String,SubProtocolHandler> getProtocolHandlers()
public void setDefaultProtocolHandler(SubProtocolHandler defaultProtocolHandler)
SubProtocolHandler to use when the client did not request a
sub-protocol.defaultProtocolHandler - the default handlerpublic SubProtocolHandler getDefaultProtocolHandler()
public void afterConnectionEstablished(WebSocketSession session) throws Exception
WebSocketHandlerafterConnectionEstablished in interface WebSocketHandlerException - this method can handle or propagate exceptions; see class-level
Javadoc for details.protected final SubProtocolHandler findProtocolHandler(WebSocketSession session)
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception
WebSocketHandlerhandleMessage in interface WebSocketHandlerException - this method can handle or propagate exceptions; see class-level
Javadoc for details.public void handleMessage(Message<?> message) throws MessagingException
MessageHandlerMessageRejectedException e.g.
in case of a Selective Consumer. When a consumer tries to handle a
message, but fails to do so, a MessageHandlingException is
thrown. In the last case it is recommended to treat the message as tainted
and go into an error scenario.
When the handling results in a failure of another message being sent
(e.g. a "reply" message), that failure will trigger a
MessageDeliveryException.
handleMessage in interface MessageHandlermessage - the message to be handled
reply related to the handling of the messageMessagingExceptionpublic void handleTransportError(WebSocketSession session, Throwable exception) throws Exception
WebSocketHandlerhandleTransportError in interface WebSocketHandlerException - this method can handle or propagate exceptions; see class-level
Javadoc for details.public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception
WebSocketHandlerafterConnectionClosed in interface WebSocketHandlerException - this method can handle or propagate exceptions; see class-level
Javadoc for details.public boolean supportsPartialMessages()
WebSocketHandlertrue and the underlying WebSocket server supports partial messages,
then a large WebSocket message, or one of an unknown size may be split and
maybe received over multiple calls to
WebSocketHandler.handleMessage(WebSocketSession, WebSocketMessage). The flag
WebSocketMessage.isLast() indicates if
the message is partial and whether it is the last part.supportsPartialMessages in interface WebSocketHandler