クラス SessionRepositoryMessageInterceptor<S extends Session>

java.lang.ObjectSE
org.springframework.session.web.socket.server.SessionRepositoryMessageInterceptor<S>
型パラメーター:
S - Session
実装されたすべてのインターフェース:
org.springframework.messaging.support.ChannelInterceptororg.springframework.web.socket.server.HandshakeInterceptor

public final class SessionRepositoryMessageInterceptor<S extends Session> extends ObjectSE implements org.springframework.messaging.support.ChannelInterceptor, org.springframework.web.socket.server.HandshakeInterceptor

ChannelInterceptor および HandshakeInterceptor として機能し、Session.getLastAccessedTime() が最新であることを確認します。

  • ハンドシェイクが実行されるときに、Session.getId() を WebSocket セッション属性に関連付けます。これは、後でメッセージをインターセプトして Session.getLastAccessedTime() が確実に更新されるようにするときに使用されます。
  • setMatchingMessageTypes(Set) に対応する SimpMessageType を持つ Message をインターセプトし、Session の最終アクセス時刻を更新します。Session の有効期限が切れると、Message は続行できなくなります。

SessionRepositoryMessageInterceptor を機能させるには、ChannelInterceptor および HandshakeInterceptor として登録する必要があります。

導入:
1.0
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
    新しいインスタンスを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    afterHandshake(org.springframework.http.server.ServerHttpRequest request, org.springframework.http.server.ServerHttpResponse response, org.springframework.web.socket.WebSocketHandler wsHandler, ExceptionSE exception)
    boolean
    beforeHandshake(org.springframework.http.server.ServerHttpRequest request, org.springframework.http.server.ServerHttpResponse response, org.springframework.web.socket.WebSocketHandler wsHandler, MapSE<StringSE,ObjectSE> attributes)
    static StringSE
    org.springframework.messaging.Message<?>
    preSend(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel)
    void
    setMatchingMessageTypes(SetSE<org.springframework.messaging.simp.SimpMessageType> matchingMessageTypes)
    一致するように SimpMessageType を設定します。
    static void
    setSessionId(MapSE<StringSE,ObjectSE> attributes, StringSE sessionId)

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE

    インターフェース org.springframework.messaging.support.ChannelInterceptor から継承されたメソッド

    afterReceiveCompletion, afterSendCompletion, postReceive, postSend, preReceive
  • コンストラクターの詳細

    • SessionRepositoryMessageInterceptor

      public SessionRepositoryMessageInterceptor(SessionRepository<S> sessionRepository)
      新しいインスタンスを作成します。
      パラメーター:
      sessionRepository - 使用する SessionRepository。null にはできません。
  • メソッドの詳細

    • setMatchingMessageTypes

      public void setMatchingMessageTypes(SetSE<org.springframework.messaging.simp.SimpMessageType> matchingMessageTypes)

      一致するように SimpMessageType を設定します。Message が一致する場合、preSend(Message, MessageChannel) は、Session が期限切れになっていないことを確認し、Session.getLastAccessedTime() を更新します。

      デフォルトは: SimpMessageType.CONNECT、SimpMessageType.MESSAGE、SimpMessageType.SUBSCRIBE、SimpMessageType.UNSUBSCRIBE。

      パラメーター:
      matchingMessageTypes - preSend(Message, MessageChannel) で一致する SimpMessageType、それ以外の場合、Message は Session にアクセスまたは更新せずに続行されます
    • preSend

      public org.springframework.messaging.Message<?> preSend(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel)
      次で指定:
      インターフェース org.springframework.messaging.support.ChannelInterceptorpreSend 
    • beforeHandshake

      public boolean beforeHandshake(org.springframework.http.server.ServerHttpRequest request, org.springframework.http.server.ServerHttpResponse response, org.springframework.web.socket.WebSocketHandler wsHandler, MapSE<StringSE,ObjectSE> attributes)
      次で指定:
      インターフェース org.springframework.web.socket.server.HandshakeInterceptorbeforeHandshake 
    • afterHandshake

      public void afterHandshake(org.springframework.http.server.ServerHttpRequest request, org.springframework.http.server.ServerHttpResponse response, org.springframework.web.socket.WebSocketHandler wsHandler, ExceptionSE exception)
      次で指定:
      インターフェース org.springframework.web.socket.server.HandshakeInterceptorafterHandshake 
    • getSessionId

      public static StringSE getSessionId(MapSE<StringSE,ObjectSE> attributes)
    • setSessionId

      public static void setSessionId(MapSE<StringSE,ObjectSE> attributes, StringSE sessionId)