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
    Modifier and Type | Method and Description
    --- | ---
    `protected ListenableFuture<WebSocketSession>` | `doHandshakeInternal(WebSocketHandler webSocketHandler, 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.
    `AsyncListenableTaskExecutor` | `getTaskExecutor()` Return the configured `TaskExecutor`.
    `Map<String,Object>` | `getUserProperties()` The configured user properties.
    `void` | `setTaskExecutor(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
                                      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 AsyncListenableTaskExecutor getTaskExecutor()

      Return the configured `TaskExecutor`.

    - #### doHandshakeInternal

          protected ListenableFuture<WebSocketSession> doHandshakeInternal(WebSocketHandler webSocketHandler,
                                                                           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.