public class ConcurrentWebSocketSessionDecorator extends WebSocketSessionDecorator
WebSocketSession
をラップして、一度に 1 つのスレッドのみがメッセージを送信できるようにします。送信が遅い場合、他のスレッドからさらにメッセージを送信しようとしても、フラッシュロックを取得できず、代わりにメッセージがバッファリングされます。その時点で、指定されたバッファーサイズ制限と送信時間制限がチェックされ、制限を超えた場合はセッションが閉じられます。
修飾子と型 | クラスと説明 |
---|---|
static class | ConcurrentWebSocketSessionDecorator.OverflowStrategy バッファがいっぱいになったときに何をするかのオプションの列挙。 |
コンストラクターと説明 |
---|
ConcurrentWebSocketSessionDecorator(WebSocketSession delegate, int sendTimeLimit, int bufferSizeLimit) 基本コンストラクター。 |
ConcurrentWebSocketSessionDecorator(WebSocketSession delegate, int sendTimeLimit, int bufferSizeLimit, ConcurrentWebSocketSessionDecorator.OverflowStrategy overflowStrategy) 使用するオーバーフロー戦略も指定するコンストラクター。 |
修飾子と型 | メソッドと説明 |
---|---|
void | close(CloseStatus status) 指定されたクローズ状態で WebSocket 接続を閉じます。 |
int | getBufferSize() 現在のバッファサイズ(バイト数)を返します。 |
int | getBufferSizeLimit() 構成されたバッファーサイズ制限(バイト数)を返します。 |
int | getSendTimeLimit() 設定された送信時間制限(ミリ秒)を返します。 |
long | getTimeSinceSendStarted() 現在の送信が開始されてからの時間(ミリ秒)を返します。現在送信が進行中でない場合は 0 を返します。 |
void | sendMessage(WebSocketMessage<?> message) WebSocket メッセージを送信する: TextMessage または BinaryMessage のいずれか。 |
void | setMessageCallback(ConsumerSE<WebSocketMessage<?>> callback) メッセージが送信バッファに追加された後に呼び出されるコールバックを設定します。 |
StringSE | toString() |
close, getAcceptedProtocol, getAttributes, getBinaryMessageSizeLimit, getDelegate, getExtensions, getHandshakeHeaders, getId, getLastSession, getLocalAddress, getPrincipal, getRemoteAddress, getTextMessageSizeLimit, getUri, isOpen, setBinaryMessageSizeLimit, setTextMessageSizeLimit, unwrap
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
public ConcurrentWebSocketSessionDecorator(WebSocketSession delegate, int sendTimeLimit, int bufferSizeLimit)
delegate
- 委譲する WebSocketSession
sendTimeLimit
- 送信時間制限 (ミリ秒)bufferSizeLimit
- バッファサイズの制限 (バイト数)public ConcurrentWebSocketSessionDecorator(WebSocketSession delegate, int sendTimeLimit, int bufferSizeLimit, ConcurrentWebSocketSessionDecorator.OverflowStrategy overflowStrategy)
delegate
- 委譲する WebSocketSession
sendTimeLimit
- 送信時間制限 (ミリ秒)bufferSizeLimit
- バッファサイズの制限 (バイト数)overflowStrategy
- 使用するオーバーフロー戦略。デフォルトでは、セッションは終了します。public int getSendTimeLimit()
public int getBufferSizeLimit()
public int getBufferSize()
public long getTimeSinceSendStarted()
public void setMessageCallback(ConsumerSE<WebSocketMessage<?>> callback)
callback
- 呼び出すコールバック public void sendMessage(WebSocketMessage<?> message) throws IOExceptionSE
WebSocketSession
TextMessage
または BinaryMessage
のいずれか。 注意 : 基礎となる標準 WebSocket セッション(JSR-356)は同時送信を許可しません。送信を同期する必要があります。これを確実にするための 1 つのオプションは、WebSocketSession
を ConcurrentWebSocketSessionDecorator
でラップすることです。
WebSocketSession
の sendMessage
WebSocketSessionDecorator
の sendMessage
IOExceptionSE
ConcurrentWebSocketSessionDecorator
public void close(CloseStatus status) throws IOExceptionSE
WebSocketSession
WebSocketSession
の close
WebSocketSessionDecorator
の close
IOExceptionSE
public StringSE toString()
WebSocketSessionDecorator
の toString