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
Constructor Summary
Constructors Constructor Description AbstractXhrTransport()
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description ListenableFuture<WebSocketSession>
connect(TransportRequest request, WebSocketHandler handler)
Connect the transport.protected abstract void
connectInternal(TransportRequest request, WebSocketHandler handler, URI receiveUrl, HttpHeaders handshakeHeaders, XhrClientSockJsSession session, SettableListenableFuture<WebSocketSession> connectFuture)
String
executeInfoRequest(URI infoUrl, HttpHeaders headers)
Perform an HTTP request to the SockJS "Info" URL.protected abstract ResponseEntity<String>
executeInfoRequestInternal(URI infoUrl, HttpHeaders headers)
void
executeSendRequest(URI url, HttpHeaders headers, TextMessage message)
Execute a request to send the message to the server.protected abstract ResponseEntity<String>
executeSendRequestInternal(URI url, HttpHeaders headers, TextMessage message)
List<TransportType>
getTransportTypes()
Return the SockJS transport types that this transport can be used for.boolean
isXhrStreamingDisabled()
Whether XHR streaming is disabled or not.void
setXhrStreamingDisabled(boolean disabled)
AnXhrTransport
can support both the "xhr_streaming" and "xhr" SockJS server transports.
Constructor Detail
AbstractXhrTransport
public AbstractXhrTransport()
Method Detail
getTransportTypes
public List<TransportType> getTransportTypes()
Description copied from interface:Transport
Return 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, anXhrTransport
could do both.- Specified by:
getTransportTypes
in interfaceTransport
setXhrStreamingDisabled
public void setXhrStreamingDisabled(boolean disabled)
AnXhrTransport
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 interfaceXhrTransport
connect
public ListenableFuture<WebSocketSession> connect(TransportRequest request, WebSocketHandler handler)
Description copied from interface:Transport
Connect the transport.
connectInternal
protected abstract void connectInternal(TransportRequest request, WebSocketHandler handler, URI receiveUrl, HttpHeaders handshakeHeaders, XhrClientSockJsSession session, SettableListenableFuture<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 interfaceInfoReceiver
- Parameters:
infoUrl
- the URL to obtain SockJS server information fromheaders
- 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 interfaceXhrTransport
- Parameters:
url
- the URL for sending messages.message
- the message to send
executeSendRequestInternal
protected abstract ResponseEntity<String> executeSendRequestInternal(URI url, HttpHeaders headers, TextMessage message)