public class ConcurrentWebSocketSessionDecorator extends WebSocketSessionDecorator
WebSocketSession
to guarantee only one thread can send messages at a time.
If a send is slow, subsequent attempts to send more messages from other threads will not be able to acquire the flush lock and messages will be buffered instead. At that time, the specified buffer-size limit and send-time limit will be checked and the session will be closed if the limits are exceeded.
| Constructor and Description |
|---|
ConcurrentWebSocketSessionDecorator(WebSocketSession delegate,
int sendTimeLimit,
int bufferSizeLimit)
Create a new
ConcurrentWebSocketSessionDecorator. |
| Modifier and Type | Method and Description |
|---|---|
void |
close(CloseStatus status)
Close the WebSocket connection with the given close status.
|
int |
getBufferSize()
Return the current buffer size (number of bytes).
|
int |
getBufferSizeLimit()
Return the configured buffer-size limit (number of bytes).
|
int |
getSendTimeLimit()
Return the configured send-time limit (milliseconds).
|
long |
getTimeSinceSendStarted()
Return the time (milliseconds) since the current send started,
or 0 if no send is currently in progress.
|
void |
sendMessage(WebSocketMessage<?> message)
Send a WebSocket message: either
TextMessage or BinaryMessage. |
java.lang.String |
toString() |
close, getAcceptedProtocol, getAttributes, getBinaryMessageSizeLimit, getDelegate, getExtensions, getHandshakeHeaders, getId, getLastSession, getLocalAddress, getPrincipal, getRemoteAddress, getTextMessageSizeLimit, getUri, isOpen, setBinaryMessageSizeLimit, setTextMessageSizeLimit, unwrappublic ConcurrentWebSocketSessionDecorator(WebSocketSession delegate, int sendTimeLimit, int bufferSizeLimit)
ConcurrentWebSocketSessionDecorator.delegate - the WebSocketSession to delegate tosendTimeLimit - the send-time limit (milliseconds)bufferSizeLimit - the buffer-size limit (number of bytes)public int getSendTimeLimit()
public int getBufferSizeLimit()
public int getBufferSize()
public long getTimeSinceSendStarted()
public void sendMessage(WebSocketMessage<?> message) throws java.io.IOException
WebSocketSessionTextMessage or BinaryMessage.sendMessage in interface WebSocketSessionsendMessage in class WebSocketSessionDecoratorjava.io.IOExceptionpublic void close(CloseStatus status) throws java.io.IOException
WebSocketSessionclose in interface WebSocketSessionclose in class WebSocketSessionDecoratorjava.io.IOExceptionpublic java.lang.String toString()
toString in class WebSocketSessionDecorator