クラス ConcurrentWebSocketSessionDecorator

java.lang.ObjectSE
org.springframework.web.socket.handler.WebSocketSessionDecorator
org.springframework.web.socket.handler.ConcurrentWebSocketSessionDecorator
実装されたすべてのインターフェース:
CloseableSEAutoCloseableSEWebSocketSession

public class ConcurrentWebSocketSessionDecorator extends WebSocketSessionDecorator
WebSocketSession をラップして、一度に 1 つのスレッドのみがメッセージを送信できるようにします。

送信が遅い場合、他のスレッドからさらにメッセージを送信しようとしても、フラッシュロックを取得できず、代わりにメッセージがバッファリングされます。その時点で、指定されたバッファーサイズ制限と送信時間制限がチェックされ、制限を超えた場合はセッションが閉じられます。

導入:
4.0.3
作成者:
Rossen Stoyanchev, Juergen Hoeller
  • コンストラクターの詳細

    • ConcurrentWebSocketSessionDecorator

      public ConcurrentWebSocketSessionDecorator(WebSocketSession delegate, int sendTimeLimit, int bufferSizeLimit)
      基本コンストラクター。
      パラメーター:
      delegate - 委譲する WebSocketSession 
      sendTimeLimit - 送信時間制限 (ミリ秒)
      bufferSizeLimit - バッファサイズの制限 (バイト数)
    • ConcurrentWebSocketSessionDecorator

      public ConcurrentWebSocketSessionDecorator(WebSocketSession delegate, int sendTimeLimit, int bufferSizeLimit, ConcurrentWebSocketSessionDecorator.OverflowStrategy overflowStrategy)
      使用するオーバーフロー戦略も指定するコンストラクター。
      パラメーター:
      delegate - 委譲する WebSocketSession 
      sendTimeLimit - 送信時間制限 (ミリ秒)
      bufferSizeLimit - バッファサイズの制限 (バイト数)
      overflowStrategy - 使用するオーバーフロー戦略。デフォルトでは、セッションは終了します。
      導入:
      5.1
  • メソッドの詳細

    • getSendTimeLimit

      public int getSendTimeLimit()
      設定された送信時間制限(ミリ秒)を返します。
      導入:
      4.3.13
    • getBufferSizeLimit

      public int getBufferSizeLimit()
      構成されたバッファーサイズ制限(バイト数)を返します。
      導入:
      4.3.13
    • getBufferSize

      public int getBufferSize()
      現在のバッファサイズ(バイト数)を返します。
    • getTimeSinceSendStarted

      public long getTimeSinceSendStarted()
      現在の送信が開始されてからの時間(ミリ秒)を返します。現在送信が進行中でない場合は 0 を返します。
    • setMessageCallback

      public void setMessageCallback(ConsumerSE<WebSocketMessage<?>> callback)
      メッセージが送信バッファに追加された後に呼び出されるコールバックを設定します。
      パラメーター:
      callback - 呼び出すコールバック
      導入:
      5.3
    • sendMessage

      public void sendMessage(WebSocketMessage<?> message) throws IOExceptionSE
      インターフェースからコピーされた説明: WebSocketSession
      WebSocket メッセージを送信する: TextMessage または BinaryMessage のいずれか。

      注意 : 基盤となる標準の WebSocket セッション(JSR-356)では、同時送信は許可されていません。送信を同期する必要があります。これを確実にするための 1 つのオプションは、WebSocketSession を ConcurrentWebSocketSessionDecorator でラップすることです。

      次で指定:
      インターフェース WebSocketSessionsendMessage 
      オーバーライド:
      クラス WebSocketSessionDecoratorsendMessage 
      例外:
      IOExceptionSE
      関連事項:
    • close

      public void close(CloseStatus status) throws IOExceptionSE
      インターフェースからコピーされた説明: WebSocketSession
      指定されたクローズ状態で WebSocket 接続を閉じます。
      次で指定:
      インターフェース WebSocketSessionclose 
      オーバーライド:
      クラス WebSocketSessionDecoratorclose 
      例外:
      IOExceptionSE
    • toString

      public StringSE toString()
      オーバーライド:
      クラス WebSocketSessionDecoratortoString