org.springframework.web.socket.sockjs.transport.session

Class AbstractHttpSockJsSession

    • Constructor Detail

      • AbstractHttpSockJsSession

        public AbstractHttpSockJsSession(java.lang.String id,
                                         SockJsServiceConfig config,
                                         WebSocketHandler wsHandler,
                                         java.util.Map<java.lang.String,java.lang.Object> attributes)
    • Method Detail

      • getUri

        public java.net.URI getUri()
        Description copied from interface: WebSocketSession
        Return the URI used to open the WebSocket connection.
      • getHandshakeHeaders

        public HttpHeaders getHandshakeHeaders()
        Description copied from interface: WebSocketSession
        Return the headers used in the handshake request (never null).
      • getPrincipal

        @Nullable
        public java.security.Principal getPrincipal()
        Description copied from interface: WebSocketSession
        Return a Principal instance containing the name of the authenticated user.

        If the user has not been authenticated, the method returns null.

      • getLocalAddress

        @Nullable
        public java.net.InetSocketAddress getLocalAddress()
        Description copied from interface: WebSocketSession
        Return the address on which the request was received.
      • getRemoteAddress

        @Nullable
        public java.net.InetSocketAddress getRemoteAddress()
        Description copied from interface: WebSocketSession
        Return the address of the remote client.
      • setAcceptedProtocol

        public void setAcceptedProtocol(@Nullable
                                        java.lang.String protocol)
        Unlike WebSocket where sub-protocol negotiation is part of the initial handshake, in HTTP transports the same negotiation must be emulated and the selected protocol set through this setter.
        Parameters:
        protocol - the sub-protocol to set
      • getAcceptedProtocol

        @Nullable
        public java.lang.String getAcceptedProtocol()
        Return the selected sub-protocol to use.
        Returns:
        the protocol identifier, or null if no protocol was specified or negotiated successfully
      • getMessageCache

        protected java.util.Queue<java.lang.String> getMessageCache()
        Return the SockJS buffer for messages stored transparently between polling requests. If the polling request takes longer than 5 seconds, the session is closed.
        See Also:
        TransportHandlingSockJsService
      • isActive

        public boolean isActive()
        Description copied from class: AbstractSockJsSession
        Polling and Streaming sessions periodically close the current HTTP request and wait for the next request to come through. During this "downtime" the session is still open but inactive and unable to send messages and therefore has to buffer them temporarily. A WebSocket session by contrast is stateful and remain active until closed.
        Specified by:
        isActive in class AbstractSockJsSession
      • setTextMessageSizeLimit

        public void setTextMessageSizeLimit(int messageSizeLimit)
        Description copied from interface: WebSocketSession
        Configure the maximum size for an incoming text message.
      • getTextMessageSizeLimit

        public int getTextMessageSizeLimit()
        Description copied from interface: WebSocketSession
        Get the configured maximum size for an incoming text message.
      • setBinaryMessageSizeLimit

        public void setBinaryMessageSizeLimit(int messageSizeLimit)
        Description copied from interface: WebSocketSession
        Configure the maximum size for an incoming binary message.
      • getBinaryMessageSizeLimit

        public int getBinaryMessageSizeLimit()
        Description copied from interface: WebSocketSession
        Get the configured maximum size for an incoming binary message.
      • getExtensions

        public java.util.List<WebSocketExtension> getExtensions()
        Description copied from interface: WebSocketSession
        Determine the negotiated extensions.
        Returns:
        the list of extensions, or an empty list if no extension was specified or negotiated successfully
      • handleInitialRequest

        public void handleInitialRequest(ServerHttpRequest request,
                                         ServerHttpResponse response,
                                         SockJsFrameFormat frameFormat)
                                  throws SockJsException
        Handle the first request for receiving messages on a SockJS HTTP transport based session.

        Long polling-based transports (e.g. "xhr", "jsonp") complete the request after writing the open frame. Streaming-based transports ("xhr_streaming", "eventsource", and "htmlfile") leave the response open longer for further streaming of message frames but will also close it eventually after some amount of data has been sent.

        Parameters:
        request - the current request
        response - the current response
        frameFormat - the transport-specific SocksJS frame format to use
        Throws:
        SockJsException
      • handleSuccessiveRequest

        public void handleSuccessiveRequest(ServerHttpRequest request,
                                            ServerHttpResponse response,
                                            SockJsFrameFormat frameFormat)
                                     throws SockJsException
        Handle all requests, except the first one, to receive messages on a SockJS HTTP transport based session.

        Long polling-based transports (e.g. "xhr", "jsonp") complete the request after writing any buffered message frames (or the next one). Streaming-based transports ("xhr_streaming", "eventsource", and "htmlfile") leave the response open longer for further streaming of message frames but will also close it eventually after some amount of data has been sent.

        Parameters:
        request - the current request
        response - the current response
        frameFormat - the transport-specific SocksJS frame format to use
        Throws:
        SockJsException
      • handleRequestInternal

        protected abstract void handleRequestInternal(ServerHttpRequest request,
                                                      ServerHttpResponse response,
                                                      boolean initialRequest)
                                               throws java.io.IOException
        Invoked when a SockJS transport request is received.
        Parameters:
        request - the current request
        response - the current response
        initialRequest - whether it is the first request for the session
        Throws:
        java.io.IOException
      • resetRequest

        protected void resetRequest()