@Override public byte[] transformPayload(AtmosphereResponse response, byte[] responseDraft, byte[] data) throws IOException { cancelF(request); return responseDraft; }
@Override public void onSuspend(AtmosphereResourceEvent event) { // We did not clocked when this listener was added because connection was not already suspended if (!wasSuspended) { clock(interval, r, request, response); } }
} catch (IOException e) { logger.warn("", e); cancelF(request); return Action.CONTINUE; final int interval = extractHeartbeatInterval(impl); clock(interval, r, request, response);
if (HeartbeatInterceptor.class.isAssignableFrom(interceptor.getClass())) { final HeartbeatInterceptor heartbeatInterceptor = HeartbeatInterceptor.class.cast(interceptor); heartbeatInterval = heartbeatInterceptor.clientHeartbeatFrequencyInSeconds() * 1000; heartbeatData = new String(heartbeatInterceptor.getPaddingBytes()); break;
@Override public void configure(final AtmosphereConfig config) { framework = config.framework(); supportWebSocket = config.framework().getAsyncSupport().supportWebSocket(); config.properties().put(HeaderConfig.JSONP_CALLBACK_NAME, "c"); for (AtmosphereInterceptor i : framework.interceptors()) { if (HeartbeatInterceptor.class.isAssignableFrom(i.getClass())) { HeartbeatInterceptor.class.cast(i).paddingText("h".getBytes()).heartbeatFrequencyInSeconds(25); } } if (config.handlers().size() == 0) { framework.addAtmosphereHandler("/*", ECHO_ATMOSPHEREHANDLER); } }
public static void addInterceptors(AtmosphereFramework framework, Bus bus) { Object ais = bus.getProperty("atmosphere.interceptors"); // pre-install those atmosphere default interceptors before the custom interceptors. framework.interceptor(new CacheHeadersInterceptor()).interceptor(new HeartbeatInterceptor()) .interceptor(new SSEAtmosphereInterceptor()).interceptor(new JavaScriptProtocol()); if (ais == null || ais instanceof AtmosphereInterceptor) { framework.interceptor(ais == null ? new DefaultProtocolInterceptor() : (AtmosphereInterceptor)ais); return; } if (ais instanceof List<?>) { List<AtmosphereInterceptor> icps = CastUtils.cast((List<?>)ais); // add the custom interceptors for (AtmosphereInterceptor icp : icps) { framework.interceptor(icp); } } }
public static void addInterceptors(AtmosphereFramework framework, Bus bus) { Object ais = bus.getProperty("atmosphere.interceptors"); // pre-install those atmosphere default interceptors before the custom interceptors. framework.interceptor(new CacheHeadersInterceptor()).interceptor(new HeartbeatInterceptor()) .interceptor(new SSEAtmosphereInterceptor()).interceptor(new JavaScriptProtocol()); if (ais == null || ais instanceof AtmosphereInterceptor) { framework.interceptor(ais == null ? new DefaultProtocolInterceptor() : (AtmosphereInterceptor)ais); return; } if (ais instanceof List<?>) { List<AtmosphereInterceptor> icps = CastUtils.cast((List<?>)ais); // add the custom interceptors for (AtmosphereInterceptor icp : icps) { framework.interceptor(icp); } } }
@Override public void onClose(AtmosphereResourceEvent event) { cancelF(request); } });
@Override public void postPayload(final AtmosphereResponse response, byte[] data, int offset, int length) { logger.trace("Scheduling heartbeat for {}", r.uuid()); clock(interval, r, request, response); } });
@Override public void onResume(AtmosphereResourceEvent event) { cancelF(request); }
@Override public void onDisconnect(AtmosphereResourceEvent event) { cancelF(request); }
@Override public void destroy() { if (destroyed.getAndSet(true)) return; for (AtmosphereResource r : config.resourcesFactory().findAll()) { cancelF(r.getRequest()); } }
@Override public Object call() throws Exception { synchronized (r) { if (AtmosphereResourceImpl.class.cast(r).isInScope() && r.isSuspended()) { try { logger.trace("Heartbeat for Resource {}", r); response.write(paddingBytes, false); if (Utils.resumableTransport(r.transport()) && resumeOnHeartbeat) { r.resume(); } else if (flushBuffer) { response.flushBuffer(); } } catch (Throwable t) { logger.trace("{}", r.uuid(), t); cancelF(request); } } else { cancelF(request); } } return null; } }, interval, TimeUnit.SECONDS));