private void scheduleSessionTask() { synchronized (this.sessions) { if (this.sessionCleanupTask != null) { return; } this.sessionCleanupTask = getTaskScheduler().scheduleAtFixedRate(() -> { List<String> removedIds = new ArrayList<>(); for (SockJsSession session : this.sessions.values()) { try { if (session.getTimeSinceLastActive() > getDisconnectDelay()) { this.sessions.remove(session.getId()); removedIds.add(session.getId()); session.close(); } } catch (Throwable ex) { // Could be part of normal workflow (e.g. browser tab closed) logger.debug("Failed to close " + session, ex); } } if (logger.isDebugEnabled() && !removedIds.isEmpty()) { logger.debug("Closed " + removedIds.size() + " sessions: " + removedIds); } }, getDisconnectDelay()); } }
assertThat(sockJsService, instanceOf(TransportHandlingSockJsService.class)); TransportHandlingSockJsService transportService = (TransportHandlingSockJsService) sockJsService; assertThat(transportService.getTaskScheduler(), instanceOf(TestTaskScheduler.class)); assertThat(transportService.getTransportHandlers().values(), containsInAnyOrder(
private void scheduleSessionTask() { synchronized (this.sessions) { if (this.sessionCleanupTask != null) { return; } this.sessionCleanupTask = getTaskScheduler().scheduleAtFixedRate(() -> { List<String> removedIds = new ArrayList<>(); for (SockJsSession session : this.sessions.values()) { try { if (session.getTimeSinceLastActive() > getDisconnectDelay()) { this.sessions.remove(session.getId()); removedIds.add(session.getId()); session.close(); } } catch (Throwable ex) { // Could be part of normal workflow (e.g. browser tab closed) logger.debug("Failed to close " + session, ex); } } if (logger.isDebugEnabled() && !removedIds.isEmpty()) { logger.debug("Closed " + removedIds.size() + " sessions: " + removedIds); } }, getDisconnectDelay()); } }
private void scheduleSessionTask() { synchronized (this.sessions) { if (this.sessionCleanupTask != null) { return; } this.sessionCleanupTask = getTaskScheduler().scheduleAtFixedRate(() -> { List<String> removedIds = new ArrayList<>(); for (SockJsSession session : this.sessions.values()) { try { if (session.getTimeSinceLastActive() > getDisconnectDelay()) { this.sessions.remove(session.getId()); removedIds.add(session.getId()); session.close(); } } catch (Throwable ex) { // Could be part of normal workflow (e.g. browser tab closed) logger.debug("Failed to close " + session, ex); } } if (logger.isDebugEnabled() && !removedIds.isEmpty()) { logger.debug("Closed " + removedIds.size() + " sessions: " + removedIds); } }, getDisconnectDelay()); } }
assertSame(this.taskScheduler, sockJsService.getTaskScheduler()); assertSame(this.sockJsMessageCodec, sockJsService.getMessageCodec()); Map<TransportType, TransportHandler> transportHandlers = sockJsService.getTransportHandlers();