Class WebsocketSessionManager

java.lang.Object
org.apache.myfaces.push.cdi.WebsocketSessionManager

@ApplicationScoped public class WebsocketSessionManager extends Object
  • Constructor Details

    • WebsocketSessionManager

      public WebsocketSessionManager()
  • Method Details

    • init

      @PostConstruct public void init()
    • getSessionMap

      public ConcurrentLRUCache<String,Collection<Reference<jakarta.websocket.Session>>> getSessionMap()
    • getUserMap

    • registerSessionToken

      public void registerSessionToken(String channelToken)
    • registerUser

      public void registerUser(Serializable user, String channel, String channelToken)
    • deregisterUser

      public void deregisterUser(Serializable user, String channel, String channelToken)
    • getChannelTokensForUser

      public Set<String> getChannelTokensForUser(Serializable user, String channel)
    • initSessionMap

      public void initSessionMap(ExternalContext context)
    • clearSessions

      public void clearSessions()
    • addOrUpdateSession

      public boolean addOrUpdateSession(String channelToken, jakarta.websocket.Session session)
    • removeSession

      public void removeSession(String channelToken, jakarta.websocket.Session session)
      Remove the Session associated to the channelToken. This happens when the websocket connection is closed. Please note the connection can be closed/reopened, so this method should not block another connection using the same channelToken. To destroy the channel token, WebsocketViewBean is used to destroy the channel token at view expiration time.
      Parameters:
      channelToken -
      session -
    • removeChannelToken

      public void removeChannelToken(String channelToken)
      Remove the channelToken and close all sessions associated with it. Happens, when session scope or view scope is destroyed.
      Parameters:
      channelToken -
    • send

      protected Set<Future<Void>> send(String channelToken, Object message)
    • synchronizeSessionInstances

      public void synchronizeSessionInstances()
    • getRestoredQueue

      public Queue<String> getRestoredQueue()