public class JettyWebSocketClient extends WebSocketClientSupport implements WebSocketClient, Lifecycle
WebSocketClient
implementation for use with Jetty
org.eclipse.jetty.websocket.client.WebSocketClient
.
Note: the Jetty WebSocketClient
requires
lifecycle management and must be started and stopped. This is automatically
managed when this class is declared as a Spring bean and created with the
default constructor. See constructor notes for more details.
Modifier and Type | Class and Description |
---|---|
private static class |
JettyWebSocketClient.DefaultUpgradeListener |
Modifier and Type | Field and Description |
---|---|
private DataBufferFactory |
bufferFactory |
private boolean |
externallyManaged |
private org.eclipse.jetty.websocket.client.WebSocketClient |
jettyClient |
private java.lang.Object |
lifecycleMonitor |
private boolean |
running |
logger
Constructor and Description |
---|
JettyWebSocketClient()
Default constructor that creates and manages an instance of a Jetty
WebSocketClient . |
JettyWebSocketClient(org.eclipse.jetty.websocket.client.WebSocketClient jettyClient)
Constructor that accepts an existing instance of a Jetty
WebSocketClient . |
Modifier and Type | Method and Description |
---|---|
private java.lang.Object |
createJettyHandler(java.net.URI url,
WebSocketHandler handler,
<any> completion) |
<any> |
execute(java.net.URI url,
HttpHeaders headers,
WebSocketHandler handler)
A variant of
WebSocketClient.execute(URI, WebSocketHandler) with custom headers. |
<any> |
execute(java.net.URI url,
WebSocketHandler handler)
Execute a handshake request to the given url and handle the resulting
WebSocket session with the given handler.
|
private <any> |
executeInternal(java.net.URI url,
HttpHeaders headers,
WebSocketHandler handler) |
org.eclipse.jetty.websocket.client.WebSocketClient |
getJettyClient()
Return the underlying Jetty
WebSocketClient . |
boolean |
isRunning()
Check whether this component is currently running.
|
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.
|
afterHandshake, beforeHandshake
private final org.eclipse.jetty.websocket.client.WebSocketClient jettyClient
private final boolean externallyManaged
private boolean running
private final java.lang.Object lifecycleMonitor
private final DataBufferFactory bufferFactory
public JettyWebSocketClient()
WebSocketClient
.
The instance can be obtained with getJettyClient()
for further
configuration.
Note: When this constructor is used Lifecycle
methods of this class are delegated to the Jetty WebSocketClient
.
public JettyWebSocketClient(org.eclipse.jetty.websocket.client.WebSocketClient jettyClient)
WebSocketClient
.
Note: Use of this constructor implies the Jetty
WebSocketClient
is externally managed and hence Lifecycle
methods of this class are not delegated to it.
public org.eclipse.jetty.websocket.client.WebSocketClient getJettyClient()
WebSocketClient
.public void start()
Lifecycle
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.
start
in interface Lifecycle
SmartLifecycle.isAutoStartup()
public void stop()
Lifecycle
SmartLifecycle
and its stop(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, only destroy methods will be called.
Should not throw an exception if the component isn't started yet.
In the case of a container, this will propagate the stop signal to all components that apply.
stop
in interface Lifecycle
SmartLifecycle.stop(Runnable)
,
DisposableBean.destroy()
public boolean isRunning()
Lifecycle
In the case of a container, this will return true
only if all
components that apply are currently running.
public <any> execute(java.net.URI url, WebSocketHandler handler)
WebSocketClient
execute
in interface WebSocketClient
url
- the handshake urlhandler
- the handler of the WebSocket sessionMono<Void>
to indicate the outcome of the
WebSocket session handling.public <any> execute(java.net.URI url, HttpHeaders headers, WebSocketHandler handler)
WebSocketClient
WebSocketClient.execute(URI, WebSocketHandler)
with custom headers.execute
in interface WebSocketClient
url
- the handshake urlheaders
- custom headers for the handshake requesthandler
- the handler of the WebSocket sessionMono<Void>
to indicate the outcome of the
WebSocket session handling.private <any> executeInternal(java.net.URI url, HttpHeaders headers, WebSocketHandler handler)
private java.lang.Object createJettyHandler(java.net.URI url, WebSocketHandler handler, <any> completion)