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. |
int |
getMessageSizeLimit()
Get the configured message buffer size limit in bytes.
|
List<String> |
getSupportedProtocols()
Return the list of sub-protocols supported by this handler, never
null . |
UserSessionRegistry |
getUserSessionRegistry() |
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 |
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.
|
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 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 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 messagepublic 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