Class TransportHandlingSockJsService
- java.lang.Object
- org.springframework.web.socket.sockjs.support.AbstractSockJsService
- org.springframework.web.socket.sockjs.transport.TransportHandlingSockJsService
- All Implemented Interfaces:
Lifecycle
,CorsConfigurationSource
,SockJsService
,SockJsServiceConfig
- Direct Known Subclasses:
DefaultSockJsService
public class TransportHandlingSockJsService extends AbstractSockJsService implements SockJsServiceConfig, Lifecycle
A basic implementation ofSockJsService
with support for SPI-based transport handling and session management.Based on the
TransportHandler
SPI.TransportHandler
s may additionally implement theSockJsSessionFactory
andHandshakeHandler
interfaces.See the
AbstractSockJsService
base class for important details on request mapping.- Since:
- 4.0
- Author:
- Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze
Field Summary
Fields inherited from class org.springframework.web.socket.sockjs.support.AbstractSockJsService
allowedOrigins, logger
Constructor Summary
Constructors Constructor Description TransportHandlingSockJsService(TaskScheduler scheduler, Collection<TransportHandler> handlers)
Create a TransportHandlingSockJsService with givenhandler
types.TransportHandlingSockJsService(TaskScheduler scheduler, TransportHandler... handlers)
Create a TransportHandlingSockJsService with givenhandler
types.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<HandshakeInterceptor>
getHandshakeInterceptors()
Return the configured WebSocket handshake request interceptors.SockJsMessageCodec
getMessageCodec()
The codec to use for encoding and decoding SockJS messages.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, String sessionId, String transport)
Handle a SockJS session URL (i.e.boolean
isRunning()
Check whether this component is currently running.void
setHandshakeInterceptors(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.void
start()
Start this component.void
stop()
Stop this component, typically in a synchronous fashion, such that the component is fully stopped upon return of this method.protected boolean
validateRequest(String serverId, String sessionId, String transport)
Methods inherited from class org.springframework.web.socket.sockjs.support.AbstractSockJsService
addCacheHeaders, addNoCacheHeaders, checkOrigin, getAllowedOrigins, getCorsConfiguration, getDisconnectDelay, getHeartbeatTime, getHttpMessageCacheSize, getName, getSockJsClientLibraryUrl, getStreamBytesLimit, getTaskScheduler, handleRequest, isSessionCookieNeeded, isWebSocketEnabled, sendMethodNotAllowed, setAllowedOrigins, setDisconnectDelay, setHeartbeatTime, setHttpMessageCacheSize, setName, setSessionCookieNeeded, setSockJsClientLibraryUrl, setStreamBytesLimit, setSuppressCors, setWebSocketEnabled, shouldSuppressCors
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.web.socket.sockjs.transport.SockJsServiceConfig
getHeartbeatTime, getHttpMessageCacheSize, getStreamBytesLimit, getTaskScheduler
Constructor Detail
TransportHandlingSockJsService
public TransportHandlingSockJsService(TaskScheduler scheduler, TransportHandler... handlers)
Create a TransportHandlingSockJsService with givenhandler
types.- Parameters:
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 moreTransportHandler
implementations to use
TransportHandlingSockJsService
public TransportHandlingSockJsService(TaskScheduler scheduler, Collection<TransportHandler> handlers)
Create a TransportHandlingSockJsService with givenhandler
types.- Parameters:
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 moreTransportHandler
implementations to use
Method Detail
getTransportHandlers
public Map<TransportType,TransportHandler> getTransportHandlers()
Return the registered handlers per transport type.
setMessageCodec
public void setMessageCodec(SockJsMessageCodec messageCodec)
The codec to use for encoding and decoding SockJS messages.
getMessageCodec
public SockJsMessageCodec getMessageCodec()
Description copied from interface:SockJsServiceConfig
The codec to use for encoding and decoding SockJS messages.- Specified by:
getMessageCodec
in interfaceSockJsServiceConfig
setHandshakeInterceptors
public void setHandshakeInterceptors(List<HandshakeInterceptor> interceptors)
Configure one or more WebSocket handshake request interceptors.
getHandshakeInterceptors
public List<HandshakeInterceptor> getHandshakeInterceptors()
Return the configured WebSocket handshake request interceptors.
start
public void start()
Description copied from interface:Lifecycle
Start this component.Should not throw an exception if the component is already running.
In the case of a container, this will propagate the start signal to all components that apply.
- Specified by:
start
in interfaceLifecycle
- See Also:
SmartLifecycle.isAutoStartup()
stop
public void stop()
Description copied from interface:Lifecycle
Stop this component, typically in a synchronous fashion, such that the component is fully stopped upon return of this method. Consider implementingSmartLifecycle
and itsstop(Runnable)
variant when asynchronous stop behavior is necessary.Note that this stop notification is not guaranteed to come before destruction: On regular shutdown,
Lifecycle
beans will first receive a stop notification before the general destruction callbacks are being propagated; however, on hot refresh during a context's lifetime or on aborted refresh attempts, a given bean's destroy method will be called without any consideration of stop signals upfront.Should not throw an exception if the component is not running (not started yet).
In the case of a container, this will propagate the stop signal to all components that apply.
- Specified by:
stop
in interfaceLifecycle
- See Also:
SmartLifecycle.stop(Runnable)
,DisposableBean.destroy()
isRunning
public boolean isRunning()
Description copied from interface:Lifecycle
Check whether this component is currently running.In the case of a container, this will return
true
only if all components that apply are currently running.
handleRawWebSocketRequest
protected void handleRawWebSocketRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler handler) throws IOException
Description copied from class:AbstractSockJsService
Handle request for raw WebSocket communication, i.e. without any SockJS message framing.- Specified by:
handleRawWebSocketRequest
in classAbstractSockJsService
- Throws:
IOException
handleTransportRequest
protected void handleTransportRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler handler, String sessionId, String transport) throws SockJsException
Description copied from class:AbstractSockJsService
Handle a SockJS session URL (i.e. transport-specific request).- Specified by:
handleTransportRequest
in classAbstractSockJsService
- Throws:
SockJsException
validateRequest
protected boolean validateRequest(String serverId, String sessionId, String transport)
- Overrides:
validateRequest
in classAbstractSockJsService