@Override public void invokeWebSocketProtocol(WebSocket webSocket, byte[] data, int offset, int length) { WebSocketHandlerProxy webSocketHandler = webSocketHandlerForMessage(webSocket); dispatch(webSocket, list); } else { logger.debug("The WebServer doesn't support streaming. Wrapping the message as stream."); invokeWebSocketProtocol(webSocket, new ByteArrayInputStream(data, offset, length)); return; try { if (invokeInterceptors) { invokeInterceptors(webSocketHandler, webSocket, data, offset, length); } else { webSocketHandler.onByteMessage(webSocket, data, offset, length); handleException(ex, webSocket, webSocketHandler); invokeWebSocketProtocol(webSocket, new ByteArrayInputStream(data, offset, length)); return; notifyListener(webSocket, new WebSocketEventListener.WebSocketEvent<byte[]>(data, MESSAGE, webSocket));
@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)); }
@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)); }
request.headers(configureHeader(request)).setAttribute(WebSocket.WEBSOCKET_SUSPEND, true); throw new AtmosphereMappingException("No AtmosphereHandler maps request for " + request.getRequestURI()); proxy = postProcessMapping(webSocket, request, handler); dispatch(webSocket, request, response); cleanUpAfterDisconnect = true; notifyListener(webSocket, new WebSocketEventListener.WebSocketEvent("", CONNECT, webSocket)); } catch (AtmosphereMappingException ex) { cleanUpAfterDisconnect = true;
logger.trace("Already closed {}", webSocket); } else { final boolean allowedToClose = allowedCloseCode(closeCode); resource.getAndSetPendingClose(); } else { executeClose(webSocket, closeCode); finish(webSocket, resource, r, s, !allowedToClose);
private void invokeInterceptors(WebSocketHandlerProxy webSocketHandler, WebSocket webSocket, Object webSocketMessageAsBody) throws IOException { invokeInterceptors(webSocketHandler, webSocket, webSocketMessageAsBody, 0, 0); }
private WebSocketProcessor createProcessor(AtmosphereFramework framework) { WebSocketProcessor processor = null; String webSocketProcessorName = framework.getWebSocketProcessorClassName(); if (!webSocketProcessorName.equalsIgnoreCase(DefaultWebSocketProcessor.class.getName())) { try { processor = framework.newClassInstance(WebSocketProcessor.class, (Class<WebSocketProcessor>) IOUtils.loadClass(getClass(), webSocketProcessorName)); } catch (Exception ex) { logger.error("Unable to create {}", webSocketProcessorName); processor = new DefaultWebSocketProcessor(); } } if (processor == null) { processor = new DefaultWebSocketProcessor(); } processor.configure(framework.getAtmosphereConfig()); return processor; } }
@Override public void run() { AtmosphereResponse w = new AtmosphereResponseImpl(webSocket, r, destroyable); try { dispatch(webSocket, r, w); } finally { r.destroy(); w.destroy(); } } });
@Override public Object call() throws Exception { AtmosphereResource currentResource = framework.atmosphereFactory().find(resource.uuid()); if (currentResource != null && currentResource.isSuspended()) { // Do not close if the resource has reconnected already executeClose(webSocket, 1005); finish(webSocket, currentResource, r, s, !allowedToClose); } return null; } }, ff ? (closingTime == 0 ? 1000 : closingTime) : closingTime, TimeUnit.MILLISECONDS);
boolean b = false; if (DefaultWebSocketProcessor.class.isAssignableFrom(wp.getClass())) { b = DefaultWebSocketProcessor.class.cast(wp).invokeInterceptors();
@Override public void invokeWebSocketProtocol(final WebSocket webSocket, String webSocketMessage) { WebSocketHandlerProxy webSocketHandler = webSocketHandlerForMessage(webSocket); dispatch(webSocket, list); } else { logger.debug("The WebServer doesn't support streaming. Wrapping the message as stream."); invokeWebSocketProtocol(webSocket, new StringReader(webSocketMessage)); return; try { if (invokeInterceptors) { invokeInterceptors(webSocketHandler, webSocket, webSocketMessage); } else { webSocketHandler.onTextMessage(webSocket, webSocketMessage); handleException(ex, webSocket, webSocketHandler); invokeWebSocketProtocol(webSocket, new StringReader(webSocketMessage)); return; notifyListener(webSocket, new WebSocketEventListener.WebSocketEvent(webSocketMessage, MESSAGE, webSocket));