Search in sources :

Example 1 with SessionDisconnectEvent

use of org.springframework.web.socket.messaging.SessionDisconnectEvent in project spring-session by spring-projects.

the class WebSocketRegistryListenerTests method setup.

@Before
public void setup() {
    String sessionId = "session-id";
    MapSession session = new MapSession(sessionId);
    this.attributes = new HashMap<>();
    SessionRepositoryMessageInterceptor.setSessionId(this.attributes, sessionId);
    given(this.wsSession.getAttributes()).willReturn(this.attributes);
    given(this.wsSession.getPrincipal()).willReturn(this.principal);
    given(this.wsSession.getId()).willReturn("wsSession-id");
    given(this.wsSession2.getAttributes()).willReturn(this.attributes);
    given(this.wsSession2.getPrincipal()).willReturn(this.principal);
    given(this.wsSession2.getId()).willReturn("wsSession-id2");
    Map<String, Object> headers = new HashMap<>();
    headers.put(SimpMessageHeaderAccessor.SESSION_ATTRIBUTES, this.attributes);
    given(this.message.getHeaders()).willReturn(new MessageHeaders(headers));
    this.listener = new WebSocketRegistryListener();
    this.connect = new SessionConnectEvent(this.listener, this.wsSession);
    this.connect2 = new SessionConnectEvent(this.listener, this.wsSession2);
    this.disconnect = new SessionDisconnectEvent(this.listener, this.message, this.wsSession.getId(), CloseStatus.NORMAL);
    this.deleted = new SessionDeletedEvent(this.listener, session);
    this.expired = new SessionExpiredEvent(this.listener, session);
}
Also used : HashMap(java.util.HashMap) SessionDeletedEvent(org.springframework.session.events.SessionDeletedEvent) SessionDisconnectEvent(org.springframework.web.socket.messaging.SessionDisconnectEvent) SessionExpiredEvent(org.springframework.session.events.SessionExpiredEvent) MapSession(org.springframework.session.MapSession) MessageHeaders(org.springframework.messaging.MessageHeaders) SessionConnectEvent(org.springframework.session.web.socket.events.SessionConnectEvent) Before(org.junit.Before)

Example 2 with SessionDisconnectEvent

use of org.springframework.web.socket.messaging.SessionDisconnectEvent in project spring-session by spring-projects.

the class WebSocketRegistryListener method onApplicationEvent.

@Override
public void onApplicationEvent(ApplicationEvent event) {
    if (event instanceof SessionDestroyedEvent) {
        SessionDestroyedEvent e = (SessionDestroyedEvent) event;
        closeWsSessions(e.getSessionId());
    } else if (event instanceof SessionConnectEvent) {
        SessionConnectEvent e = (SessionConnectEvent) event;
        afterConnectionEstablished(e.getWebSocketSession());
    } else if (event instanceof SessionDisconnectEvent) {
        SessionDisconnectEvent e = (SessionDisconnectEvent) event;
        Map<String, Object> sessionAttributes = SimpMessageHeaderAccessor.getSessionAttributes(e.getMessage().getHeaders());
        String httpSessionId = sessionAttributes == null ? null : SessionRepositoryMessageInterceptor.getSessionId(sessionAttributes);
        afterConnectionClosed(httpSessionId, e.getSessionId());
    }
}
Also used : SessionDisconnectEvent(org.springframework.web.socket.messaging.SessionDisconnectEvent) SessionDestroyedEvent(org.springframework.session.events.SessionDestroyedEvent) SessionConnectEvent(org.springframework.session.web.socket.events.SessionConnectEvent)

Aggregations

SessionConnectEvent (org.springframework.session.web.socket.events.SessionConnectEvent)2 SessionDisconnectEvent (org.springframework.web.socket.messaging.SessionDisconnectEvent)2 HashMap (java.util.HashMap)1 Before (org.junit.Before)1 MessageHeaders (org.springframework.messaging.MessageHeaders)1 MapSession (org.springframework.session.MapSession)1 SessionDeletedEvent (org.springframework.session.events.SessionDeletedEvent)1 SessionDestroyedEvent (org.springframework.session.events.SessionDestroyedEvent)1 SessionExpiredEvent (org.springframework.session.events.SessionExpiredEvent)1