public class StompSubProtocolHandler extends Object implements SubProtocolHandler, ApplicationEventPublisherAware
SubProtocolHandler
for STOMP that supports versions 1.0, 1.1, and 1.2
of the STOMP specification.Modifier and Type | Field and Description |
---|---|
static String |
CONNECTED_USER_HEADER
The name of the header set on the CONNECTED frame indicating the name
of the user authenticated on the WebSocket session.
|
static int |
MINIMUM_WEBSOCKET_MESSAGE_SIZE
This 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 and Description |
---|
StompSubProtocolHandler() |
Modifier and Type | Method and Description |
---|---|
void |
afterSessionEnded(WebSocketSession session,
CloseStatus closeStatus,
MessageChannel outputChannel)
Invoked after a
WebSocketSession has ended. |
void |
afterSessionStarted(WebSocketSession session,
MessageChannel outputChannel)
Invoked after a
WebSocketSession has started. |
MessageHeaderInitializer |
getHeaderInitializer()
Return the configured header initializer.
|
int |
getMessageSizeLimit()
Get the configured message buffer size limit in bytes.
|
String |
getStatsInfo()
Return a String describing internal state and counters.
|
List<String> |
getSupportedProtocols()
Return the list of sub-protocols supported by this handler, never
null . |
UserSessionRegistry |
getUserSessionRegistry()
Return the configured UserSessionRegistry.
|
void |
handleMessageFromClient(WebSocketSession session,
WebSocketMessage<?> webSocketMessage,
MessageChannel outputChannel)
Handle incoming WebSocket messages from clients.
|
void |
handleMessageToClient(WebSocketSession session,
Message<?> message)
Handle STOMP messages going back out to WebSocket clients.
|
String |
resolveSessionId(Message<?> message)
Resolve the session id from the given message or return
null . |
protected void |
sendErrorMessage(WebSocketSession session,
Throwable error) |
void |
setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
Set the ApplicationEventPublisher that this object runs in.
|
void |
setHeaderInitializer(MessageHeaderInitializer headerInitializer)
Configure a
MessageHeaderInitializer to apply to the headers of all
messages created from decoded STOMP frames and other messages sent to the
client inbound channel. |
void |
setMessageSizeLimit(int messageSizeLimit)
Configure the maximum size allowed for an incoming STOMP message.
|
void |
setUserSessionRegistry(UserSessionRegistry registry)
Provide a registry with which to register active user session ids.
|
protected StompHeaderAccessor |
toMutableAccessor(StompHeaderAccessor headerAccessor,
Message<?> message) |
String |
toString() |
public static final int MINIMUM_WEBSOCKET_MESSAGE_SIZE
public static final String CONNECTED_USER_HEADER
public void setMessageSizeLimit(int messageSizeLimit)
By default this property is set to 64K.
public int getMessageSizeLimit()
public void setUserSessionRegistry(UserSessionRegistry registry)
UserDestinationMessageHandler
public UserSessionRegistry getUserSessionRegistry()
public void setHeaderInitializer(MessageHeaderInitializer headerInitializer)
MessageHeaderInitializer
to 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.
public MessageHeaderInitializer getHeaderInitializer()
public List<String> getSupportedProtocols()
SubProtocolHandler
null
.getSupportedProtocols
in interface SubProtocolHandler
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
ApplicationEventPublisherAware
Invoked after population of normal bean properties but before an init callback like InitializingBean's afterPropertiesSet or a custom init-method. Invoked before ApplicationContextAware's setApplicationContext.
setApplicationEventPublisher
in interface ApplicationEventPublisherAware
applicationEventPublisher
- event publisher to be used by this objectpublic String getStatsInfo()
public void handleMessageFromClient(WebSocketSession session, WebSocketMessage<?> webSocketMessage, MessageChannel outputChannel)
handleMessageFromClient
in interface SubProtocolHandler
session
- the client sessionwebSocketMessage
- the client messageoutputChannel
- an output channel to send messages toprotected void sendErrorMessage(WebSocketSession session, Throwable error)
public void handleMessageToClient(WebSocketSession session, Message<?> message)
handleMessageToClient
in interface SubProtocolHandler
session
- the client sessionmessage
- the client messageprotected StompHeaderAccessor toMutableAccessor(StompHeaderAccessor headerAccessor, Message<?> message)
public String resolveSessionId(Message<?> message)
SubProtocolHandler
null
.resolveSessionId
in interface SubProtocolHandler
message
- the message to resolve the session id frompublic void afterSessionStarted(WebSocketSession session, MessageChannel outputChannel)
SubProtocolHandler
WebSocketSession
has started.afterSessionStarted
in interface SubProtocolHandler
session
- the client sessionoutputChannel
- a channelpublic void afterSessionEnded(WebSocketSession session, CloseStatus closeStatus, MessageChannel outputChannel)
SubProtocolHandler
WebSocketSession
has ended.afterSessionEnded
in interface SubProtocolHandler
session
- the client sessioncloseStatus
- the reason why the session was closedoutputChannel
- a channel