@Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { Channel ch = ctx.getChannel(); if (!handshaker.isHandshakeComplete()) { handshaker.finishHandshake(ch, (HttpResponse) e.getMessage()); handler.onConnect(); return; } if (e.getMessage() instanceof HttpResponse) { HttpResponse response = (HttpResponse) e.getMessage(); String message = "Unexpected HttpResponse (status=" + response.getStatus() + ", content=" + response.getContent().toString(CharsetUtil.UTF_8) + ')'; log.error(String.format("Web socket client: %s", message)); throw new Exception(message); } WebSocketFrame frame = (WebSocketFrame) e.getMessage(); if (frame instanceof TextWebSocketFrame) { TextWebSocketFrame textFrame = (TextWebSocketFrame) frame; try { handler.onReceive(MAPPER.parseObject(textFrame.getText())); } catch (Exception e1) { log.error("Error while decoding JSON websocket message", e1); } } else if (frame instanceof PongWebSocketFrame) { } else if (frame instanceof CloseWebSocketFrame) { ch.close(); } }
@Override public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { handler.onClose(); }