public class TransportHandlingSockJsService extends AbstractSockJsService implements SockJsServiceConfig
SockJsService
with support for SPI-based transport handling and session management.
Based on the TransportHandler
SPI. TransportHandler
s may additionally
implement the SockJsSessionFactory
and HandshakeHandler
interfaces.
See the AbstractSockJsService
base class for important details on request mapping.
Modifier and Type | Field and Description |
---|---|
private java.util.Map<TransportType,TransportHandler> |
handlers |
private java.util.List<HandshakeInterceptor> |
interceptors |
private static boolean |
jackson2Present |
private SockJsMessageCodec |
messageCodec |
private java.util.concurrent.ScheduledFuture<?> |
sessionCleanupTask |
private java.util.Map<java.lang.String,SockJsSession> |
sessions |
logger
Constructor and Description |
---|
TransportHandlingSockJsService(TaskScheduler scheduler,
java.util.Collection<TransportHandler> handlers)
Create a TransportHandlingSockJsService with given
handler types. |
TransportHandlingSockJsService(TaskScheduler scheduler,
TransportHandler... handlers)
Create a TransportHandlingSockJsService with given
handler types. |
Modifier and Type | Method and Description |
---|---|
private SockJsSession |
createSockJsSession(java.lang.String sessionId,
SockJsSessionFactory sessionFactory,
WebSocketHandler handler,
java.util.Map<java.lang.String,java.lang.Object> attributes) |
java.util.List<HandshakeInterceptor> |
getHandshakeInterceptors()
Return the configured WebSocket handshake request interceptors.
|
SockJsMessageCodec |
getMessageCodec()
The codec to use for encoding and decoding SockJS messages.
|
java.util.Map<TransportType,TransportHandler> |
getTransportHandlers()
Return the registered handlers per transport type.
|
protected void |
handleRawWebSocketRequest(ServerHttpRequest request,
ServerHttpResponse response,
WebSocketHandler handler)
Handle request for raw WebSocket communication, i.e.
|
protected void |
handleTransportRequest(ServerHttpRequest request,
ServerHttpResponse response,
WebSocketHandler handler,
java.lang.String sessionId,
java.lang.String transport)
Handle a SockJS session URL (i.e.
|
private void |
scheduleSessionTask() |
void |
setHandshakeInterceptors(java.util.List<HandshakeInterceptor> interceptors)
Configure one or more WebSocket handshake request interceptors.
|
void |
setMessageCodec(SockJsMessageCodec messageCodec)
The codec to use for encoding and decoding SockJS messages.
|
protected boolean |
validateRequest(java.lang.String serverId,
java.lang.String sessionId,
java.lang.String transport) |
addCacheHeaders, addCorsHeaders, addNoCacheHeaders, checkAndAddCorsHeaders, getAllowedOrigins, getDisconnectDelay, getHeartbeatTime, getHttpMessageCacheSize, getName, getSockJsClientLibraryUrl, getStreamBytesLimit, getTaskScheduler, handleRequest, isSessionCookieNeeded, isWebSocketEnabled, sendMethodNotAllowed, setAllowedOrigins, setDisconnectDelay, setHeartbeatTime, setHttpMessageCacheSize, setName, setSessionCookieNeeded, setSockJsClientLibraryUrl, setStreamBytesLimit, setSuppressCors, setWebSocketEnabled, shouldSuppressCors
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getHeartbeatTime, getHttpMessageCacheSize, getStreamBytesLimit, getTaskScheduler
private static final boolean jackson2Present
private final java.util.Map<TransportType,TransportHandler> handlers
private SockJsMessageCodec messageCodec
private final java.util.List<HandshakeInterceptor> interceptors
private final java.util.Map<java.lang.String,SockJsSession> sessions
private java.util.concurrent.ScheduledFuture<?> sessionCleanupTask
public TransportHandlingSockJsService(TaskScheduler scheduler, TransportHandler... handlers)
handler
types.scheduler
- a task scheduler for heart-beat messages and removing timed-out sessions;
the provided TaskScheduler should be declared as a Spring bean to ensure it gets
initialized at start-up and shuts down when the application stopshandlers
- one or more TransportHandler
implementations to usepublic TransportHandlingSockJsService(TaskScheduler scheduler, java.util.Collection<TransportHandler> handlers)
handler
types.scheduler
- a task scheduler for heart-beat messages and removing timed-out sessions;
the provided TaskScheduler should be declared as a Spring bean to ensure it gets
initialized at start-up and shuts down when the application stopshandlers
- one or more TransportHandler
implementations to usepublic java.util.Map<TransportType,TransportHandler> getTransportHandlers()
public void setMessageCodec(SockJsMessageCodec messageCodec)
public SockJsMessageCodec getMessageCodec()
SockJsServiceConfig
getMessageCodec
in interface SockJsServiceConfig
public void setHandshakeInterceptors(java.util.List<HandshakeInterceptor> interceptors)
public java.util.List<HandshakeInterceptor> getHandshakeInterceptors()
protected void handleRawWebSocketRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler handler) throws java.io.IOException
AbstractSockJsService
handleRawWebSocketRequest
in class AbstractSockJsService
java.io.IOException
protected void handleTransportRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler handler, java.lang.String sessionId, java.lang.String transport) throws SockJsException
AbstractSockJsService
handleTransportRequest
in class AbstractSockJsService
SockJsException
protected boolean validateRequest(java.lang.String serverId, java.lang.String sessionId, java.lang.String transport)
validateRequest
in class AbstractSockJsService
private SockJsSession createSockJsSession(java.lang.String sessionId, SockJsSessionFactory sessionFactory, WebSocketHandler handler, java.util.Map<java.lang.String,java.lang.Object> attributes)
private void scheduleSessionTask()