Class TransportHandlingSockJsService

java.lang.Object
org.springframework.web.socket.sockjs.support.AbstractSockJsService
org.springframework.web.socket.sockjs.transport.TransportHandlingSockJsService
All Implemented Interfaces:
org.springframework.context.Lifecycle, org.springframework.web.cors.CorsConfigurationSource, SockJsService, SockJsServiceConfig
Direct Known Subclasses:
DefaultSockJsService

public class TransportHandlingSockJsService extends AbstractSockJsService implements SockJsServiceConfig, org.springframework.context.Lifecycle
A basic implementation of SockJsService with support for SPI-based transport handling and session management.

Based on the TransportHandler SPI. TransportHandlers may additionally implement the SockJsSessionFactory and HandshakeHandler interfaces.

See the AbstractSockJsService base class for important details on request mapping.

Since:
4.0
Author:
Rossen Stoyanchev, Juergen Hoeller, Sebastien Deleuze
  • Constructor Details

    • TransportHandlingSockJsService

      public TransportHandlingSockJsService(org.springframework.scheduling.TaskScheduler scheduler, TransportHandler... handlers)
      Create a TransportHandlingSockJsService with given handler 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 stops
      handlers - one or more TransportHandler implementations to use
    • TransportHandlingSockJsService

      public TransportHandlingSockJsService(org.springframework.scheduling.TaskScheduler scheduler, Collection<TransportHandler> handlers)
      Create a TransportHandlingSockJsService with given handler 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 stops
      handlers - one or more TransportHandler implementations to use
  • Method Details

    • 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 interface SockJsServiceConfig
    • setHandshakeInterceptors

      public void setHandshakeInterceptors(@Nullable 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()
      Specified by:
      start in interface org.springframework.context.Lifecycle
    • stop

      public void stop()
      Specified by:
      stop in interface org.springframework.context.Lifecycle
    • isRunning

      public boolean isRunning()
      Specified by:
      isRunning in interface org.springframework.context.Lifecycle
    • handleRawWebSocketRequest

      protected void handleRawWebSocketRequest(org.springframework.http.server.ServerHttpRequest request, org.springframework.http.server.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 class AbstractSockJsService
      Throws:
      IOException
    • handleTransportRequest

      protected void handleTransportRequest(org.springframework.http.server.ServerHttpRequest request, org.springframework.http.server.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 class AbstractSockJsService
      Throws:
      SockJsException
    • validateRequest

      protected boolean validateRequest(String serverId, String sessionId, String transport)
      Overrides:
      validateRequest in class AbstractSockJsService