private void startHeartbeatTimer(final ChannelHandlerContext ctx, final SockJsSession session) { heartbeatFuture = ctx.executor().scheduleAtFixedRate(new Runnable() { @Override public void run() { if (ctx.channel().isActive() && ctx.channel().isRegistered()) { if (logger.isDebugEnabled()) { logger.debug("Sending heartbeat for {}", session); } ctx.channel().writeAndFlush(new HeartbeatFrame()); } } }, session.config().heartbeatInterval(), session.config().heartbeatInterval(), TimeUnit.MILLISECONDS); }
private void startSessionTimer(final ChannelHandlerContext ctx, final SockJsSession session) { if (sessionTimer == null) { sessionTimer = ctx.executor().scheduleAtFixedRate(new Runnable() { @Override public void run() { final long now = TimeUnit.NANOSECONDS.toMillis(System.nanoTime()); if (isInUse()) { return; } if (session.timestamp() + session.config().sessionTimeout() < now) { final SockJsSession removed = sessions.remove(session.sessionId()); session.connectionContext().close(); sessionTimer.cancel(true); heartbeatFuture.cancel(true); if (logger.isDebugEnabled()) { logger.debug("Removed {} from map[{}]", removed.sessionId(), sessions.size()); } } } }, session.config().sessionTimeout(), session.config().sessionTimeout(), TimeUnit.MILLISECONDS); } }
private void startSessionTimer(final ChannelHandlerContext ctx, final SockJsSession session) { if (sessionTimer == null) { sessionTimer = ctx.executor().scheduleAtFixedRate(new Runnable() { @Override public void run() { final long now = TimeUnit.NANOSECONDS.toMillis(System.nanoTime()); if (isInUse()) { return; } if (session.timestamp() + session.config().sessionTimeout() < now) { final SockJsSession removed = sessions.remove(session.sessionId()); session.connectionContext().close(); sessionTimer.cancel(true); heartbeatFuture.cancel(true); if (logger.isDebugEnabled()) { logger.debug("Removed {} from map[{}]", removed.sessionId(), sessions.size()); } } } }, session.config().sessionTimeout(), session.config().sessionTimeout(), TimeUnit.MILLISECONDS); } }
@Override public void run() { final long now = TimeUnit.NANOSECONDS.toMillis(System.nanoTime()); if (isInUse()) { return; } if (session.timestamp() + session.config().sessionTimeout() < now) { final SockJsSession removed = sessions.remove(session.sessionId()); session.connectionContext().close(); sessionTimer.cancel(true); heartbeatFuture.cancel(true); if (logger.isDebugEnabled()) { logger.debug("Removed {} from map[{}]", removed.sessionId(), sessions.size()); } } } }, session.config().sessionTimeout(), session.config().sessionTimeout(), TimeUnit.MILLISECONDS);
@Override public void run() { final long now = TimeUnit.NANOSECONDS.toMillis(System.nanoTime()); if (isInUse()) { return; } if (session.timestamp() + session.config().sessionTimeout() < now) { final SockJsSession removed = sessions.remove(session.sessionId()); session.connectionContext().close(); sessionTimer.cancel(true); heartbeatFuture.cancel(true); if (logger.isDebugEnabled()) { logger.debug("Removed {} from map[{}]", removed.sessionId(), sessions.size()); } } } }, session.config().sessionTimeout(), session.config().sessionTimeout(), TimeUnit.MILLISECONDS);
private void startHeartbeatTimer(final ChannelHandlerContext ctx, final SockJsSession session) { final long interval = session.config().webSocketHeartbeatInterval(); if (interval > 0) { if (logger.isDebugEnabled()) { logger.info("Starting heartbeat with interval {}", interval); } heartbeatFuture = ctx.executor().scheduleAtFixedRate(new Runnable() { @Override public void run() { if (ctx.channel().isActive() && ctx.channel().isRegistered()) { if (logger.isDebugEnabled()) { logger.debug("Sending heartbeat for {}", session); } ctx.channel().writeAndFlush(new HeartbeatFrame()); } } }, interval, interval, TimeUnit.MILLISECONDS); } }
private void startHeartbeatTimer(final ChannelHandlerContext ctx, final SockJsSession session) { final long interval = session.config().webSocketHeartbeatInterval(); if (interval > 0) { if (logger.isDebugEnabled()) { logger.info("Starting heartbeat with interval {}", interval); } heartbeatFuture = ctx.executor().scheduleAtFixedRate(new Runnable() { @Override public void run() { if (ctx.channel().isActive() && ctx.channel().isRegistered()) { if (logger.isDebugEnabled()) { logger.debug("Sending heartbeat for {}", session); } ctx.channel().writeAndFlush(new HeartbeatFrame()); } } }, interval, interval, TimeUnit.MILLISECONDS); } }