@Override public void onClose(javax.websocket.Session session, javax.websocket.CloseReason closeCode) { logger.trace("{} closed {}", session, closeCode); if (request != null) { request.destroy(); webSocketProcessor.close(webSocket, closeCode.getCloseCode().getCode()); } }
void patchGlassFish(NullPointerException e) { // https://java.net/jira/browse/TYRUS-175 logger.trace("", e); WebSocketProcessorFactory.getDefault().getWebSocketProcessor(config().framework()).close(this, 1002); }
@Override public void postStop() { this.webSocketProcessor.close(playWebSocket, 1002); }
@Override public void handle(Throwable event) { w.close(); logger.debug("", event); webSocketProcessor.close(w, 1006); } });
@Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { super.channelInactive(ctx); Object o = ctx.attr(ATTACHMENT).get(); if (o == null) return; if (WebSocket.class.isAssignableFrom(o.getClass())) { NettyWebSocket webSocket = NettyWebSocket.class.cast(o); logger.trace("Closing {}", webSocket.uuid()); try { if (webSocket.closeFuture() != null) { webSocket.closeFuture().cancel(true); } webSocketProcessor.close(webSocket, 1005); } catch (Exception ex) { logger.error("{}", webSocket, ex); } } else if (State.class.isAssignableFrom(o.getClass())) { logger.trace("State {}", o); State s = State.class.cast(o); if (s.action.type() == Action.TYPE.SUSPEND) { asynchronousProcessor.endRequest(s.resource(), true); } } else { logger.warn("Invalid state {} and Channel {}", o, ctx.channel()); } }
@Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { super.channelInactive(ctx); Object o = ctx.attr(ATTACHMENT).get(); if (o == null) return; if (WebSocket.class.isAssignableFrom(o.getClass())) { NettyWebSocket webSocket = NettyWebSocket.class.cast(o); logger.trace("Closing {}", webSocket.uuid()); try { if (webSocket.closeFuture() != null) { webSocket.closeFuture().cancel(true); } webSocketProcessor.close(webSocket, 1005); } catch (Exception ex) { logger.error("{}", webSocket, ex); } } else if (State.class.isAssignableFrom(o.getClass())) { logger.trace("State {}", o); State s = State.class.cast(o); if (s.action.type() == Action.TYPE.SUSPEND) { asynchronousProcessor.endRequest(s.resource(), true); } } else { logger.warn("Invalid state {} and Channel {}", o, ctx.channel()); } }
webSocket.closeHandler(aVoid -> { w.close(); webSocketProcessor.close(w, 1005); }); return this;