public class WebSocketTransportRegistration extends Object
Constructor and Description |
---|
WebSocketTransportRegistration() |
Modifier and Type | Method and Description |
---|---|
WebSocketTransportRegistration |
addDecoratorFactory(WebSocketHandlerDecoratorFactory factory)
Add a factory that to decorate the handler used to process WebSocket
messages.
|
protected List<WebSocketHandlerDecoratorFactory> |
getDecoratorFactories() |
protected Integer |
getMessageSizeLimit()
Protected accessor for internal use.
|
protected Integer |
getSendBufferSizeLimit()
Protected accessor for internal use.
|
protected Integer |
getSendTimeLimit()
Protected accessor for internal use.
|
protected Integer |
getTimeToFirstMessage()
Protected accessor for internal use.
|
WebSocketTransportRegistration |
setDecoratorFactories(WebSocketHandlerDecoratorFactory... factories)
Configure one or more factories to decorate the handler used to process
WebSocket messages.
|
WebSocketTransportRegistration |
setMessageSizeLimit(int messageSizeLimit)
Configure the maximum size of an inbound sub-protocol message, such as
a STOMP frame which may be aggregated from multiple WebSocket messages.
|
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.
|
WebSocketTransportRegistration |
setTimeToFirstMessage(int timeToFirstMessage)
Set the maximum time allowed in milliseconds after the WebSocket connection
is established and before the first sub-protocol message is received.
|
public WebSocketTransportRegistration setMessageSizeLimit(int messageSizeLimit)
The default value is 64K (i.e. 64 * 1024).
Note: This is not the same as the size of an individual WebSocket message which needs to be configured at the WebSocket server level instead. See the reference documentation for details.
@Nullable protected Integer getMessageSizeLimit()
public WebSocketTransportRegistration setSendTimeLimit(int timeLimit)
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 * 1000).
timeLimit
- the timeout value in milliseconds; the value must be
greater than 0, otherwise it is ignored.@Nullable protected Integer getSendTimeLimit()
public WebSocketTransportRegistration setSendBufferSizeLimit(int sendBufferSizeLimit)
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).
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.@Nullable protected Integer getSendBufferSizeLimit()
public WebSocketTransportRegistration setTimeToFirstMessage(int timeToFirstMessage)
This handler is for WebSocket connections that use a sub-protocol. Therefore, we expect the client to send at least one sub-protocol message in the beginning, or else we assume the connection isn't doing well, e.g. proxy issue, slow network, and can be closed.
By default this is set to 60,000
(1 minute).
timeToFirstMessage
- the maximum time allowed in milliseconds@Nullable protected Integer getTimeToFirstMessage()
public WebSocketTransportRegistration setDecoratorFactories(WebSocketHandlerDecoratorFactory... factories)
public WebSocketTransportRegistration addDecoratorFactory(WebSocketHandlerDecoratorFactory factory)
protected List<WebSocketHandlerDecoratorFactory> getDecoratorFactories()