org.springframework.web.reactive.socket.client

## Class UndertowWebSocketClient

- java.lang.Object
- - org.springframework.web.reactive.socket.client.UndertowWebSocketClient

- All Implemented Interfaces:
    WebSocketClient

      public class UndertowWebSocketClient
      extends Object
      implements WebSocketClient

  Undertow based implementation of `WebSocketClient`.
  Since:
    5.0
  Author:
    Violeta Georgieva, Rossen Stoyanchev

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `UndertowWebSocketClient(XnioWorker worker)` Constructor with the `XnioWorker` to pass to `WebSocketClient.connectionBuilder(org.xnio.XnioWorker, io.undertow.connector.ByteBufferPool, java.net.URI)`.
    `UndertowWebSocketClient(XnioWorker worker, io.undertow.connector.ByteBufferPool byteBufferPool, Consumer<io.undertow.websockets.client.WebSocketClient.ConnectionBuilder> builderConsumer)` Alternate constructor providing additional control over the `WebSocketClient.ConnectionBuilder` for each WebSocket connection.
    `UndertowWebSocketClient(XnioWorker worker, Consumer<io.undertow.websockets.client.WebSocketClient.ConnectionBuilder> builderConsumer)` Alternate constructor providing additional control over the `WebSocketClient.ConnectionBuilder` for each WebSocket connection.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected io.undertow.websockets.client.WebSocketClient.ConnectionBuilder` | `createConnectionBuilder(URI url)` Create a `WebSocketClient.ConnectionBuilder` for the given URI.
    `reactor.core.publisher.Mono<Void>` | `execute(URI url, HttpHeaders headers, WebSocketHandler handler)` A variant of `WebSocketClient.execute(URI, WebSocketHandler)` with custom headers.
    `reactor.core.publisher.Mono<Void>` | `execute(URI url, WebSocketHandler handler)` Execute a handshake request to the given url and handle the resulting WebSocket session with the given handler.
    `io.undertow.connector.ByteBufferPool` | `getByteBufferPool()` Return the `ByteBufferPool` currently used for newly created WebSocket sessions by this client.
    `Consumer<io.undertow.websockets.client.WebSocketClient.ConnectionBuilder>` | `getConnectionBuilderConsumer()` Return the configured `Consumer<ConnectionBuilder>`.
    `XnioWorker` | `getXnioWorker()` Return the configured `XnioWorker`.
    `void` | `setByteBufferPool(io.undertow.connector.ByteBufferPool byteBufferPool)` Set the `ByteBufferPool` to pass to `WebSocketClient.connectionBuilder(org.xnio.XnioWorker, io.undertow.connector.ByteBufferPool, java.net.URI)`.

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

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

- - ### Constructor Detail

    - #### UndertowWebSocketClient

          public UndertowWebSocketClient(XnioWorker worker)

      Constructor with the `XnioWorker` to pass to `WebSocketClient.connectionBuilder(org.xnio.XnioWorker, io.undertow.connector.ByteBufferPool, java.net.URI)`.
      Parameters:
        `worker` - the Xnio worker

    - #### UndertowWebSocketClient

          public UndertowWebSocketClient(XnioWorker worker,
                                         Consumer<io.undertow.websockets.client.WebSocketClient.ConnectionBuilder> builderConsumer)

      Alternate constructor providing additional control over the `WebSocketClient.ConnectionBuilder` for each WebSocket connection.
      Parameters:
        `worker` - the Xnio worker to use to create `ConnectionBuilder`'s
        `builderConsumer` - a consumer to configure `ConnectionBuilder`'s

    - #### UndertowWebSocketClient

          public UndertowWebSocketClient(XnioWorker worker,
                                         io.undertow.connector.ByteBufferPool byteBufferPool,
                                         Consumer<io.undertow.websockets.client.WebSocketClient.ConnectionBuilder> builderConsumer)

      Alternate constructor providing additional control over the `WebSocketClient.ConnectionBuilder` for each WebSocket connection.
      Parameters:
        `worker` - the Xnio worker to use to create `ConnectionBuilder`'s
        `byteBufferPool` - the ByteBufferPool to use to create `ConnectionBuilder`'s
        `builderConsumer` - a consumer to configure `ConnectionBuilder`'s
      Since:
        5.0.8

  - ### Method Detail

    - #### getXnioWorker

          public XnioWorker getXnioWorker()

      Return the configured `XnioWorker`.

    - #### setByteBufferPool

          public void setByteBufferPool(io.undertow.connector.ByteBufferPool byteBufferPool)

      Set the `ByteBufferPool` to pass to `WebSocketClient.connectionBuilder(org.xnio.XnioWorker, io.undertow.connector.ByteBufferPool, java.net.URI)`.

      By default an indirect `DefaultByteBufferPool` with a buffer size of 8192 is used.

      Since:
        5.0.8
      See Also:
        `DEFAULT_POOL_BUFFER_SIZE`

    - #### getByteBufferPool

          public io.undertow.connector.ByteBufferPool getByteBufferPool()

      Return the `ByteBufferPool` currently used for newly created WebSocket sessions by this client.
      Returns:
        the byte buffer pool
      Since:
        5.0.8

    - #### getConnectionBuilderConsumer

          public Consumer<io.undertow.websockets.client.WebSocketClient.ConnectionBuilder> getConnectionBuilderConsumer()

      Return the configured `Consumer<ConnectionBuilder>`.

    - #### execute

          public reactor.core.publisher.Mono<Void> execute(URI url,
                                                           WebSocketHandler handler)

      Description copied from interface: `WebSocketClient`
      Execute a handshake request to the given url and handle the resulting WebSocket session with the given handler.
      Specified by:
        `execute` in interface `WebSocketClient`
      Parameters:
        `url` - the handshake url
        `handler` - the handler of the WebSocket session
      Returns:
        completion `Mono<Void>` to indicate the outcome of the WebSocket session handling.

    - #### execute

          public reactor.core.publisher.Mono<Void> execute(URI url,
                                                           HttpHeaders headers,
                                                           WebSocketHandler handler)

      Description copied from interface: `WebSocketClient`
      A variant of `WebSocketClient.execute(URI, WebSocketHandler)` with custom headers.
      Specified by:
        `execute` in interface `WebSocketClient`
      Parameters:
        `url` - the handshake url
        `headers` - custom headers for the handshake request
        `handler` - the handler of the WebSocket session
      Returns:
        completion `Mono<Void>` to indicate the outcome of the WebSocket session handling.

    - #### createConnectionBuilder

          protected io.undertow.websockets.client.WebSocketClient.ConnectionBuilder createConnectionBuilder(URI url)

      Create a `WebSocketClient.ConnectionBuilder` for the given URI.

      The default implementation creates a builder with the configured `XnioWorker` and `ByteBufferPool` and then passes it to the `consumer` provided at construction time.