private void cleanup(final Throwable cause) { open = false; NativeWebSocket lws = ws; this.ws = null; this.injector = null; this.handler = null; this.closeCallback = null; this.exceptionCallback = null; this.messageCallback = null; if (lws != null && lws.isOpen()) { WebSocket.CloseStatus closeStatus = WebSocket.SERVER_ERROR; if (cause instanceof IllegalArgumentException) { closeStatus = WebSocket.BAD_DATA; } else if (cause instanceof NoSuchElementException) { closeStatus = WebSocket.BAD_DATA; } else if (cause instanceof Err) { Err err = (Err) cause; if (err.statusCode() == 400) { closeStatus = WebSocket.BAD_DATA; } } lws.close(closeStatus.code(), closeStatus.reason()); } }
@Override public void pause() { removeSession(this); synchronized (this) { if (!suspended) { ws.pause(); suspended = true; } } }
@Override public void resume() { addSession(this); synchronized (this) { if (suspended) { ws.resume(); suspended = false; } } }
ws.onBinaryMessage(buffer -> Try .run(sync(() -> messageCallback.onMessage(new WsBinaryMessage(buffer)))) .onFailure(this::handleErr)); ws.onTextMessage(message -> Try .run(sync(() -> messageCallback.onMessage( new MutantImpl(injector.getInstance(ParserExecutor.class), consumes, .onFailure(this::handleErr)); ws.onCloseMessage((code, reason) -> { removeSession(this); }); ws.onErrorMessage(this::handleErr);
@Override public boolean isOpen() { return open && ws.isOpen(); }
@Override public void close(final CloseStatus status) { removeSession(this); synchronized (this) { open = false; if (ws != null) { ws.close(status.code(), status.reason()); } } }
if (sockets.isPresent()) { NativeWebSocket ws = request.upgrade(NativeWebSocket.class); ws.onConnect(() -> ((WebSocketImpl) sockets.get()).connect(injector, req, ws)); return;
ws.onBinaryMessage(buffer -> Try .run(sync(() -> messageCallback.onMessage(new WsBinaryMessage(buffer)))) .onFailure(this::handleErr)); ws.onTextMessage(message -> Try .run(sync(() -> messageCallback.onMessage( new MutantImpl(injector.getInstance(ParserExecutor.class), consumes, .onFailure(this::handleErr)); ws.onCloseMessage((code, reason) -> { removeSession(this); }); ws.onErrorMessage(this::handleErr);
@Override public boolean isOpen() { return open && ws.isOpen(); }
@Override public void close(final CloseStatus status) { removeSession(this); synchronized (this) { open = false; ws.close(status.code(), status.reason()); } }
if (sockets.isPresent()) { NativeWebSocket ws = request.upgrade(NativeWebSocket.class); ws.onConnect(() -> ((WebSocketImpl) sockets.get()).connect(injector, req, ws)); return;
private void cleanup(final Throwable cause) { open = false; NativeWebSocket lws = ws; this.ws = null; this.injector = null; this.handler = null; this.closeCallback = null; this.exceptionCallback = null; this.messageCallback = null; if (lws != null && lws.isOpen()) { WebSocket.CloseStatus closeStatus = WebSocket.SERVER_ERROR; if (cause instanceof IllegalArgumentException) { closeStatus = WebSocket.BAD_DATA; } else if (cause instanceof NoSuchElementException) { closeStatus = WebSocket.BAD_DATA; } else if (cause instanceof Err) { Err err = (Err) cause; if (err.statusCode() == 400) { closeStatus = WebSocket.BAD_DATA; } } lws.close(closeStatus.code(), closeStatus.reason()); } }
@Override public void pause() { removeSession(this); synchronized (this) { if (!suspended) { ws.pause(); suspended = true; } } }
@Override public void resume() { addSession(this); synchronized (this) { if (suspended) { ws.resume(); suspended = false; } } }