Class AbstractXhrTransport

java.lang.Object
org.springframework.web.socket.sockjs.client.AbstractXhrTransport
All Implemented Interfaces:
InfoReceiver, Transport, XhrTransport
Direct Known Subclasses:
JettyXhrTransport, RestTemplateXhrTransport, UndertowXhrTransport

public abstract class AbstractXhrTransport extends Object implements XhrTransport
Abstract base class for XHR transport implementations to extend.
Since:
4.1
Author:
Rossen Stoyanchev
  • Field Details

    • PRELUDE

      protected static final String PRELUDE
    • logger

      protected final Log logger
  • Constructor Details

    • AbstractXhrTransport

      public AbstractXhrTransport()
  • Method Details

    • getTransportTypes

      public List<TransportType> getTransportTypes()
      Description copied from interface: Transport
      Get the SockJS transport types that this transport can be used for.

      In particular since from a client perspective there is no difference between XHR and XHR streaming, an XhrTransport could do both.

      Specified by:
      getTransportTypes in interface Transport
    • setXhrStreamingDisabled

      public void setXhrStreamingDisabled(boolean disabled)
      An XhrTransport can support both the "xhr_streaming" and "xhr" SockJS server transports. From a client perspective there is no implementation difference.

      Typically an XhrTransport is used as "XHR streaming" first and then, if that fails, as "XHR". In some cases however it may be helpful to suppress XHR streaming so that only XHR is attempted.

      By default this property is set to false which means both "XHR streaming" and "XHR" apply.

    • isXhrStreamingDisabled

      public boolean isXhrStreamingDisabled()
      Whether XHR streaming is disabled or not.
      Specified by:
      isXhrStreamingDisabled in interface XhrTransport
    • connectAsync

      public CompletableFuture<WebSocketSession> connectAsync(TransportRequest request, WebSocketHandler handler)
      Description copied from interface: Transport
      Connect the transport.
      Specified by:
      connectAsync in interface Transport
      Parameters:
      request - the transport request
      handler - the application handler to delegate lifecycle events to
      Returns:
      a future to indicate success or failure to connect
    • connectInternal

      @Deprecated protected void connectInternal(TransportRequest request, WebSocketHandler handler, URI receiveUrl, HttpHeaders handshakeHeaders, XhrClientSockJsSession session, SettableListenableFuture<WebSocketSession> connectFuture)
      Deprecated.
    • connectInternal

      protected abstract void connectInternal(TransportRequest request, WebSocketHandler handler, URI receiveUrl, HttpHeaders handshakeHeaders, XhrClientSockJsSession session, CompletableFuture<WebSocketSession> connectFuture)
    • executeInfoRequest

      public String executeInfoRequest(URI infoUrl, @Nullable HttpHeaders headers)
      Description copied from interface: InfoReceiver
      Perform an HTTP request to the SockJS "Info" URL. and return the resulting JSON response content, or raise an exception.

      Note that as of 4.2 this method accepts a headers parameter.

      Specified by:
      executeInfoRequest in interface InfoReceiver
      Parameters:
      infoUrl - the URL to obtain SockJS server information from
      headers - the headers to use for the request
      Returns:
      the body of the response
    • executeInfoRequestInternal

      protected abstract ResponseEntity<String> executeInfoRequestInternal(URI infoUrl, HttpHeaders headers)
    • executeSendRequest

      public void executeSendRequest(URI url, HttpHeaders headers, TextMessage message)
      Description copied from interface: XhrTransport
      Execute a request to send the message to the server.

      Note that as of 4.2 this method accepts a headers parameter.

      Specified by:
      executeSendRequest in interface XhrTransport
      Parameters:
      url - the URL for sending messages.
      message - the message to send
    • executeSendRequestInternal

      protected abstract ResponseEntity<String> executeSendRequestInternal(URI url, HttpHeaders headers, TextMessage message)