org.springframework.web.socket.client.jetty

## Class JettyWebSocketClient

- java.lang.Object
- - org.springframework.web.socket.client.AbstractWebSocketClient
  - - org.springframework.web.socket.client.jetty.JettyWebSocketClient

All Implemented Interfaces:
  org.springframework.context.Lifecycle, WebSocketClient

    public class JettyWebSocketClient
    extends AbstractWebSocketClient
    implements org.springframework.context.Lifecycle

Initiates WebSocket requests to a WebSocket server programmatically through the Jetty WebSocket API.

As of 4.1 this class implements `Lifecycle` rather than `SmartLifecycle`. Use `WebSocketConnectionManager` instead to auto-start a WebSocket connection.

Since:
  4.0
Author:
  Rossen Stoyanchev

### Field Summary

### Fields inherited from class org.springframework.web.socket.client.AbstractWebSocketClient

`logger`

### Constructor Summary

Constructors
Constructor and Description
`JettyWebSocketClient()` Default constructor that creates an instance of `WebSocketClient`.
`JettyWebSocketClient(org.eclipse.jetty.websocket.client.WebSocketClient client)` Constructor that accepts an existing `WebSocketClient` instance.

### Method Summary

All Methods Instance Methods Concrete Methods
`org.springframework.util.concurrent.ListenableFuture<WebSocketSession>` `doHandshake(WebSocketHandler webSocketHandler, String uriTemplate, Object... uriVars)`
`org.springframework.util.concurrent.ListenableFuture<WebSocketSession>` `doHandshakeInternal(WebSocketHandler wsHandler, org.springframework.http.HttpHeaders headers, URI uri, List<String> protocols, List<WebSocketExtension> extensions, Map<String,Object> attributes)` Perform the actual handshake to establish a connection to the server.
`org.springframework.core.task.AsyncListenableTaskExecutor` `getTaskExecutor()` Return the configured `TaskExecutor`.
`protected Principal` `getUser()` Return the user to make available through `WebSocketSession.getPrincipal()`.
`boolean` `isRunning()`
`void` `setTaskExecutor(org.springframework.core.task.AsyncListenableTaskExecutor taskExecutor)` Set an `AsyncListenableTaskExecutor` to use when opening connections.
`void` `start()`
`void` `stop()`

### Methods inherited from class org.springframework.web.socket.client.AbstractWebSocketClient

`assertUri, doHandshake`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### JettyWebSocketClient

    public JettyWebSocketClient()

Default constructor that creates an instance of `WebSocketClient`.

#### JettyWebSocketClient

    public JettyWebSocketClient(org.eclipse.jetty.websocket.client.WebSocketClient client)

Constructor that accepts an existing `WebSocketClient` instance.

### Method Detail

#### setTaskExecutor

    public void setTaskExecutor(@Nullable
                                org.springframework.core.task.AsyncListenableTaskExecutor taskExecutor)

Set an `AsyncListenableTaskExecutor` to use when opening connections. If this property is set to `null`, calls to any of the `doHandshake` methods will block until the connection is established.

By default an instance of `SimpleAsyncTaskExecutor` is used.

#### getTaskExecutor

    @Nullable
    public org.springframework.core.task.AsyncListenableTaskExecutor getTaskExecutor()

Return the configured `TaskExecutor`.

#### 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`

#### doHandshake

    public org.springframework.util.concurrent.ListenableFuture<WebSocketSession> doHandshake(WebSocketHandler webSocketHandler,
                                                                                              String uriTemplate,
                                                                                              Object... uriVars)

Specified by:
  `doHandshake` in interface `WebSocketClient`
Overrides:
  `doHandshake` in class `AbstractWebSocketClient`

#### doHandshakeInternal

    public org.springframework.util.concurrent.ListenableFuture<WebSocketSession> doHandshakeInternal(WebSocketHandler wsHandler,
                                                                                                      org.springframework.http.HttpHeaders headers,
                                                                                                      URI uri,
                                                                                                      List<String> protocols,
                                                                                                      List<WebSocketExtension> extensions,
                                                                                                      Map<String,Object> attributes)

Description copied from class: `AbstractWebSocketClient`
Perform the actual handshake to establish a connection to the server.

Specified by:
  `doHandshakeInternal` in class `AbstractWebSocketClient`
Parameters:
  `wsHandler` - the client-side handler for WebSocket messages
  `headers` - the HTTP headers to use for the handshake, with unwanted (forbidden) headers filtered out (never `null`)
  `uri` - the target URI for the handshake (never `null`)
  `protocols` - requested sub-protocols, or an empty list
  `extensions` - requested WebSocket extensions, or an empty list
  `attributes` - the attributes to associate with the WebSocketSession, i.e. via `WebSocketSession.getAttributes()`; currently always an empty map.
Returns:
  the established WebSocket session wrapped in a ListenableFuture.

#### getUser

    @Nullable
    protected Principal getUser()

Return the user to make available through `WebSocketSession.getPrincipal()`. By default this method returns `null`