@Override public void onPing(WebSocket webSocket, byte[] payload, int offset, int length) { WebSocketHandlerProxy webSocketHandler = webSocketHandlerForMessage(webSocket); if (webSocketHandler != null && WebSocketPingPongListener.class.isAssignableFrom(webSocketHandler.proxied().getClass())) { WebSocketPingPongListener.class.cast(webSocketHandler.proxied()).onPing(webSocket, payload, offset, length); } } }
@Override public void onPong(WebSocket webSocket, byte[] payload, int offset, int length) { WebSocketHandlerProxy webSocketHandler = webSocketHandlerForMessage(webSocket); if (webSocketHandler != null && WebSocketPingPongListener.class.isAssignableFrom(webSocketHandler.proxied().getClass())) { WebSocketPingPongListener.class.cast(webSocketHandler.proxied()).onPong(webSocket, payload, offset, length); } }
private static final Object injectWith(AtmosphereResource r) { // Check for null when disconnect happens. This happens when websocket are closed by both the client and the server // concurrently. if (r == null) { return null; } AtmosphereHandler h = r.getAtmosphereHandler(); if (r.getAtmosphereHandler() == null) { return null; } if (AtmosphereFramework.REFLECTOR_ATMOSPHEREHANDLER.getClass().isAssignableFrom(h.getClass())) { if (AtmosphereResourceImpl.class.cast(r).webSocket() == null || AtmosphereResourceImpl.class.cast(r).webSocket().webSocketHandler() == null) { return null; } return WebSocketProcessor.WebSocketHandlerProxy.class.cast(AtmosphereResourceImpl.class.cast(r).webSocket().webSocketHandler()).proxied(); } else { return injectWith(h); } }
WebSocketStreamingHandler.class.cast(webSocketHandler.proxied).onTextStream(webSocket, Reader.class.cast(webSocketMessageAsBody)); } else if (InputStream.class.isAssignableFrom(webSocketMessageAsBody.getClass())) { WebSocketStreamingHandler.class.cast(webSocketHandler.proxied()).onBinaryStream(webSocket, InputStream.class.cast(webSocketMessageAsBody)); } else { webSocketHandler.onByteMessage(webSocket, (byte[]) webSocketMessageAsBody, offset, length);
if (!WebSocketStreamingHandler.class.isAssignableFrom(webSocketHandler.proxied().getClass())) { try { if (invokeInterceptors) {
@Override public void invokeWebSocketProtocol(WebSocket webSocket, Reader reader) { WebSocketHandlerProxy webSocketHandler = webSocketHandlerForMessage(webSocket); try { if (webSocketHandler == null) { if (WebSocketProtocolStream.class.isAssignableFrom(webSocketProtocol.getClass())) { List<AtmosphereRequest> list = WebSocketProtocolStream.class.cast(webSocketProtocol).onTextStream(webSocket, reader); dispatch(webSocket, list); } else { dispatchReader(webSocket, reader); return; } } else { if (WebSocketStreamingHandler.class.isAssignableFrom(webSocketHandler.proxied().getClass())) { if (invokeInterceptors) { invokeInterceptors(webSocketHandler, webSocket, reader); } else { WebSocketStreamingHandler.class.cast(webSocketHandler.proxied()).onTextStream(webSocket, reader); } } else { dispatchReader(webSocket, reader); return; } } } catch (Exception ex) { handleException(ex, webSocket, webSocketHandler); } notifyListener(webSocket, new WebSocketEventListener.WebSocketEvent<Reader>(reader, MESSAGE, webSocket)); }
if (!WebSocketStreamingHandler.class.isAssignableFrom(webSocketHandler.proxied().getClass())) { try { if (invokeInterceptors) {
@Override public void invokeWebSocketProtocol(WebSocket webSocket, InputStream stream) { WebSocketHandlerProxy webSocketHandler = webSocketHandlerForMessage(webSocket); try { if (webSocketHandler == null) { if (WebSocketProtocolStream.class.isAssignableFrom(webSocketProtocol.getClass())) { List<AtmosphereRequest> list = WebSocketProtocolStream.class.cast(webSocketProtocol).onBinaryStream(webSocket, stream); dispatch(webSocket, list); } else { dispatchStream(webSocket, stream); return; } } else { if (WebSocketStreamingHandler.class.isAssignableFrom(webSocketHandler.proxied.getClass())) { if (invokeInterceptors) { invokeInterceptors(webSocketHandler, webSocket, stream); } else { WebSocketStreamingHandler.class.cast(webSocketHandler.proxied()).onBinaryStream(webSocket, stream); } } else { dispatchStream(webSocket, stream); return; } } } catch (Exception ex) { handleException(ex, webSocket, webSocketHandler); } notifyListener(webSocket, new WebSocketEventListener.WebSocketEvent<InputStream>(stream, MESSAGE, webSocket)); }