org.springframework.web.socket.client.standard

## Class StandardWebSocketClient

- java.lang.Object
- - org.springframework.web.socket.client.AbstractWebSocketClient
  - - org.springframework.web.socket.client.standard.StandardWebSocketClient

All Implemented Interfaces:
  WebSocketClient

    public class StandardWebSocketClient
    extends AbstractWebSocketClient

A WebSocketClient based on standard Java WebSocket API.

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
`StandardWebSocketClient()` Default constructor that calls `ContainerProvider.getWebSocketContainer()` to obtain a (new) `WebSocketContainer` instance.
`StandardWebSocketClient(WebSocketContainer webSocketContainer)` Constructor accepting an existing `WebSocketContainer` instance.

### Method Summary

All Methods Instance Methods Concrete Methods
`protected org.springframework.util.concurrent.ListenableFuture<WebSocketSession>` `doHandshakeInternal(WebSocketHandler webSocketHandler, 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`.
`Map<String,Object>` `getUserProperties()` The configured user properties.
`void` `setTaskExecutor(org.springframework.core.task.AsyncListenableTaskExecutor taskExecutor)` Set an `AsyncListenableTaskExecutor` to use when opening connections.
`void` `setUserProperties(Map<String,Object> userProperties)` The standard Java WebSocket API allows passing "user properties" to the server via `userProperties`.

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

`assertUri, doHandshake, doHandshake`

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

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

### Constructor Detail

#### StandardWebSocketClient

    public StandardWebSocketClient()

Default constructor that calls `ContainerProvider.getWebSocketContainer()` to obtain a (new) `WebSocketContainer` instance. Also see constructor accepting existing `WebSocketContainer` instance.

#### StandardWebSocketClient

    public StandardWebSocketClient(WebSocketContainer webSocketContainer)

Constructor accepting an existing `WebSocketContainer` instance.

For XML configuration, see `WebSocketContainerFactoryBean`. For Java configuration, use `ContainerProvider.getWebSocketContainer()` to obtain the `WebSocketContainer` instance.

### Method Detail

#### setUserProperties

    public void setUserProperties(@Nullable
                                  Map<String,Object> userProperties)

The standard Java WebSocket API allows passing "user properties" to the server via `userProperties`. Use this property to configure one or more properties to be passed on every handshake.

#### getUserProperties

    public Map<String,Object> getUserProperties()

The configured user properties.

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

#### doHandshakeInternal

    protected org.springframework.util.concurrent.ListenableFuture<WebSocketSession> doHandshakeInternal(WebSocketHandler webSocketHandler,
                                                                                                         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:
  `webSocketHandler` - 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.