org.springframework.web.socket.config.annotation

## Class WebSocketTransportRegistration

- java.lang.Object
- - org.springframework.web.socket.config.annotation.WebSocketTransportRegistration

-     public class WebSocketTransportRegistration
      extends Object

  Configure the processing of messages received from and sent to WebSocket clients.
  Since:
    4.0.3
  Author:
    Rossen Stoyanchev

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `WebSocketTransportRegistration()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Integer` | `getMessageSizeLimit()` Protected accessor for internal use.
    `protected Integer` | `getSendBufferSizeLimit()` Protected accessor for internal use.
    `protected Integer` | `getSendTimeLimit()` Protected accessor for internal use.
    `WebSocketTransportRegistration` | `setMessageSizeLimit(int messageSizeLimit)` Configure the maximum size for an incoming sub-protocol message.
    `WebSocketTransportRegistration` | `setSendBufferSizeLimit(int sendBufferSizeLimit)` Configure the maximum amount of data to buffer when sending messages to a WebSocket session, or an HTTP response when SockJS fallback option are in use.
    `WebSocketTransportRegistration` | `setSendTimeLimit(int timeLimit)` Configure a time limit (in milliseconds) for the maximum amount of a time allowed when sending messages to a WebSocket session or writing to an HTTP response when SockJS fallback option are in use.

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

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

- - ### Constructor Detail

    - #### WebSocketTransportRegistration

          public WebSocketTransportRegistration()

  - ### Method Detail

    - #### setMessageSizeLimit

          public WebSocketTransportRegistration setMessageSizeLimit(int messageSizeLimit)

      Configure the maximum size for an incoming sub-protocol message. For example a STOMP message may be received as multiple WebSocket messages or multiple HTTP POST requests when SockJS fallback options are in use.

      In theory a WebSocket message can be almost unlimited in size. In practice WebSocket servers impose limits on incoming message size. STOMP clients for example tend to split large messages around 16K boundaries. Therefore a server must be able to buffer partial content and decode when enough data is received. Use this property to configure the max size of the buffer to use.

      The default value is 64K (i.e. 64 * 1024).

      NOTE that the current version 1.2 of the STOMP spec does not specifically discuss how to send STOMP messages over WebSocket. Version 2 of the spec will but in the mean time existing client libraries have already established a practice that servers must handle.

    - #### getMessageSizeLimit

          protected Integer getMessageSizeLimit()

      Protected accessor for internal use.

    - #### setSendTimeLimit

          public WebSocketTransportRegistration setSendTimeLimit(int timeLimit)

      Configure a time limit (in milliseconds) for the maximum amount of a time allowed when sending messages to a WebSocket session or writing to an HTTP response when SockJS fallback option are in use.

      In general WebSocket servers expect that messages to a single WebSocket session are sent from a single thread at a time. This is automatically guaranteed when using `@EnableWebSocketMessageBroker` configuration. If message sending is slow, or at least slower than rate of messages sending, subsequent messages are buffered until either the `sendTimeLimit` or the `sendBufferSizeLimit` are reached at which point the session state is cleared and an attempt is made to close the session.

      NOTE that the session time limit is checked only on attempts to send additional messages. So if only a single message is sent and it hangs, the session will not time out until another message is sent or the underlying physical socket times out. So this is not a replacement for WebSocket server or HTTP connection timeout but is rather intended to control the extent of buffering of unsent messages.

      NOTE that closing the session may not succeed in actually closing the physical socket and may also hang. This is true especially when using blocking IO such as the BIO connector in Tomcat that is used by default on Tomcat 7. Therefore it is recommended to ensure the server is using non-blocking IO such as Tomcat's NIO connector that is used by default on Tomcat 8. If you must use blocking IO consider customizing OS-level TCP settings, for example `/proc/sys/net/ipv4/tcp_retries2` on Linux.

      The default value is 10 seconds (i.e. 10 * 10000).

      Parameters:
        `timeLimit` - the timeout value in milliseconds; the value must be greater than 0, otherwise it is ignored.

    - #### getSendTimeLimit

          protected Integer getSendTimeLimit()

      Protected accessor for internal use.

    - #### setSendBufferSizeLimit

          public WebSocketTransportRegistration setSendBufferSizeLimit(int sendBufferSizeLimit)

      Configure the maximum amount of data to buffer when sending messages to a WebSocket session, or an HTTP response when SockJS fallback option are in use.

      In general WebSocket servers expect that messages to a single WebSocket session are sent from a single thread at a time. This is automatically guaranteed when using `@EnableWebSocketMessageBroker` configuration. If message sending is slow, or at least slower than rate of messages sending, subsequent messages are buffered until either the `sendTimeLimit` or the `sendBufferSizeLimit` are reached at which point the session state is cleared and an attempt is made to close the session.

      NOTE that closing the session may not succeed in actually closing the physical socket and may also hang. This is true especially when using blocking IO such as the BIO connector in Tomcat configured by default on Tomcat 7. Therefore it is recommended to ensure the server is using non-blocking IO such as Tomcat's NIO connector used by default on Tomcat 8. If you must use blocking IO consider customizing OS-level TCP settings, for example `/proc/sys/net/ipv4/tcp_retries2` on Linux.

      The default value is 512K (i.e. 512 * 1024).

      Parameters:
        `sendBufferSizeLimit` - the maximum number of bytes to buffer when sending messages; if the value is less than or equal to 0 then buffering is effectively disabled.

    - #### getSendBufferSizeLimit

          protected Integer getSendBufferSizeLimit()

      Protected accessor for internal use.