Class StompSubProtocolHandler
java.lang.Object
org.springframework.web.socket.messaging.StompSubProtocolHandler
- All Implemented Interfaces:
org.springframework.beans.factory.Aware,org.springframework.context.ApplicationEventPublisherAware,SubProtocolHandler
public class StompSubProtocolHandler
extends Object
implements SubProtocolHandler, org.springframework.context.ApplicationEventPublisherAware
A
SubProtocolHandler for STOMP that supports versions 1.0, 1.1, and 1.2
of the STOMP specification.- Since:
- 4.0
- Author:
- Rossen Stoyanchev, Andy Wilkinson
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceContract for access to session counters. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe name of the header set on the CONNECTED frame indicating the name of the user authenticated on the WebSocket session.static final intThis handler supports assembling large STOMP messages split into multiple WebSocket messages and STOMP clients (like stomp.js) indeed split large STOMP messages at 16K boundaries. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidafterSessionEnded(WebSocketSession session, CloseStatus closeStatus, org.springframework.messaging.MessageChannel outputChannel) Invoked after aWebSocketSessionhas ended.voidafterSessionStarted(WebSocketSession session, org.springframework.messaging.MessageChannel outputChannel) Invoked after aWebSocketSessionhas started.Return the configured error handler.org.springframework.messaging.support.MessageHeaderInitializerReturn the configured header initializer.intGet the configured message buffer size limit in bytes.getStats()Return a structured object with internal state and counters.Return a String describing internal state and counters.Return the list of sub-protocols supported by this handler (nevernull).voidhandleMessageFromClient(WebSocketSession session, WebSocketMessage<?> webSocketMessage, org.springframework.messaging.MessageChannel outputChannel) Handle incoming WebSocket messages from clients.voidhandleMessageToClient(WebSocketSession session, org.springframework.messaging.Message<?> message) Handle STOMP messages going back out to WebSocket clients.resolveSessionId(org.springframework.messaging.Message<?> message) Resolve the session id from the given message or returnnull.voidsetApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) voidsetDecoder(org.springframework.messaging.simp.stomp.StompDecoder decoder) Configure aStompDecoderfor decoding STOMP frames.voidsetEncoder(org.springframework.messaging.simp.stomp.StompEncoder encoder) Configure aStompEncoderfor encoding STOMP frames.voidsetErrorHandler(StompSubProtocolErrorHandler errorHandler) Configure a handler for error messages sent to clients which allows customizing the error messages or preventing them from being sent.voidsetHeaderInitializer(org.springframework.messaging.support.MessageHeaderInitializer headerInitializer) Configure aMessageHeaderInitializerto apply to the headers of all messages created from decoded STOMP frames and other messages sent to the client inbound channel.voidsetMessageSizeLimit(int messageSizeLimit) Configure the maximum size allowed for an incoming STOMP message.protected org.springframework.messaging.simp.stomp.StompHeaderAccessortoMutableAccessor(org.springframework.messaging.simp.stomp.StompHeaderAccessor headerAccessor, org.springframework.messaging.Message<?> message) toString()
-
Field Details
-
MINIMUM_WEBSOCKET_MESSAGE_SIZE
public static final int MINIMUM_WEBSOCKET_MESSAGE_SIZEThis handler supports assembling large STOMP messages split into multiple WebSocket messages and STOMP clients (like stomp.js) indeed split large STOMP messages at 16K boundaries. Therefore the WebSocket server input message buffer size must allow 16K at least plus a little extra for SockJS framing.- See Also:
-
CONNECTED_USER_HEADER
The name of the header set on the CONNECTED frame indicating the name of the user authenticated on the WebSocket session.- See Also:
-
-
Constructor Details
-
StompSubProtocolHandler
public StompSubProtocolHandler()
-
-
Method Details
-
setErrorHandler
Configure a handler for error messages sent to clients which allows customizing the error messages or preventing them from being sent.By default this isn't configured in which case an ERROR frame is sent with a message header reflecting the error.
- Parameters:
errorHandler- the error handler
-
getErrorHandler
Return the configured error handler. -
setMessageSizeLimit
public void setMessageSizeLimit(int messageSizeLimit) Configure the maximum size allowed for an incoming STOMP message. Since a STOMP message can be received in multiple WebSocket messages, buffering may be required and therefore it is necessary to know the maximum allowed message size.By default this property is set to 64K.
- Since:
- 4.0.3
-
getMessageSizeLimit
public int getMessageSizeLimit()Get the configured message buffer size limit in bytes.- Since:
- 4.0.3
-
setEncoder
public void setEncoder(org.springframework.messaging.simp.stomp.StompEncoder encoder) Configure aStompEncoderfor encoding STOMP frames.- Since:
- 4.3.5
-
setDecoder
public void setDecoder(org.springframework.messaging.simp.stomp.StompDecoder decoder) Configure aStompDecoderfor decoding STOMP frames.- Since:
- 4.3.5
-
setHeaderInitializer
public void setHeaderInitializer(@Nullable org.springframework.messaging.support.MessageHeaderInitializer headerInitializer) Configure aMessageHeaderInitializerto apply to the headers of all messages created from decoded STOMP frames and other messages sent to the client inbound channel.By default this property is not set.
-
getHeaderInitializer
@Nullable public org.springframework.messaging.support.MessageHeaderInitializer getHeaderInitializer()Return the configured header initializer. -
getSupportedProtocols
Description copied from interface:SubProtocolHandlerReturn the list of sub-protocols supported by this handler (nevernull).- Specified by:
getSupportedProtocolsin interfaceSubProtocolHandler
-
setApplicationEventPublisher
public void setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) - Specified by:
setApplicationEventPublisherin interfaceorg.springframework.context.ApplicationEventPublisherAware
-
getStatsInfo
Return a String describing internal state and counters. EffectivelytoString()ongetStats(). -
getStats
Return a structured object with internal state and counters.- Since:
- 5.2
-
handleMessageFromClient
public void handleMessageFromClient(WebSocketSession session, WebSocketMessage<?> webSocketMessage, org.springframework.messaging.MessageChannel outputChannel) Handle incoming WebSocket messages from clients.- Specified by:
handleMessageFromClientin interfaceSubProtocolHandler- Parameters:
session- the client sessionwebSocketMessage- the client messageoutputChannel- an output channel to send messages to
-
handleMessageToClient
public void handleMessageToClient(WebSocketSession session, org.springframework.messaging.Message<?> message) Handle STOMP messages going back out to WebSocket clients.- Specified by:
handleMessageToClientin interfaceSubProtocolHandler- Parameters:
session- the client sessionmessage- the client message
-
toMutableAccessor
protected org.springframework.messaging.simp.stomp.StompHeaderAccessor toMutableAccessor(org.springframework.messaging.simp.stomp.StompHeaderAccessor headerAccessor, org.springframework.messaging.Message<?> message) -
resolveSessionId
Description copied from interface:SubProtocolHandlerResolve the session id from the given message or returnnull.- Specified by:
resolveSessionIdin interfaceSubProtocolHandler- Parameters:
message- the message to resolve the session id from
-
afterSessionStarted
public void afterSessionStarted(WebSocketSession session, org.springframework.messaging.MessageChannel outputChannel) Description copied from interface:SubProtocolHandlerInvoked after aWebSocketSessionhas started.- Specified by:
afterSessionStartedin interfaceSubProtocolHandler- Parameters:
session- the client sessionoutputChannel- a channel
-
afterSessionEnded
public void afterSessionEnded(WebSocketSession session, CloseStatus closeStatus, org.springframework.messaging.MessageChannel outputChannel) Description copied from interface:SubProtocolHandlerInvoked after aWebSocketSessionhas ended.- Specified by:
afterSessionEndedin interfaceSubProtocolHandler- Parameters:
session- the client sessioncloseStatus- the reason why the session was closedoutputChannel- a channel
-
toString
-