@Override public PongWebSocketFrame retain() { super.retain(); return this; }
@Override public CloseWebSocketFrame retain() { super.retain(); return this; }
@Override public ContinuationWebSocketFrame retain() { super.retain(); return this; }
@Override public BinaryWebSocketFrame retain(int increment) { super.retain(increment); return this; }
@Override public PingWebSocketFrame retain() { super.retain(); return this; }
@Override public TextWebSocketFrame retain() { super.retain(); return this; }
@Override public ContinuationWebSocketFrame retain(int increment) { super.retain(increment); return this; }
@Override public BinaryWebSocketFrame retain() { super.retain(); return this; }
@Override public CloseWebSocketFrame retain(int increment) { super.retain(increment); return this; }
@Override public PingWebSocketFrame retain(int increment) { super.retain(increment); return this; }
@Override public PongWebSocketFrame retain(int increment) { super.retain(increment); return this; }
@Override public TextWebSocketFrame retain(int increment) { super.retain(increment); return this; }
public void bufferFrame(WebSocketFrame frame) { if (bufferedFrames == null) { bufferedFrames = new ArrayList<>(1); } frame.retain(); bufferedFrames.add(frame); }
@Override protected void decode(ChannelHandlerContext ctx, WebSocketFrame frame, List<Object> out) throws Exception { if (frame instanceof PingWebSocketFrame) { frame.content().retain(); ctx.channel().writeAndFlush(new PongWebSocketFrame(frame.content())); return; } if (frame instanceof PongWebSocketFrame && dropPongFrames) { return; } out.add(frame.retain()); }
private void handleWebSocketFrame(final ChannelHandlerContext ctx, WebSocketFrame frame) { if (frame instanceof CloseWebSocketFrame) { handshaker.close(ctx.channel(), (CloseWebSocketFrame) frame.retain()); } else if (frame instanceof TextWebSocketFrame) { webSocketClientRegistry.receivedTextWebSocketFrame(((TextWebSocketFrame) frame)); } else if (frame instanceof PingWebSocketFrame) { ctx.write(new PongWebSocketFrame(frame.content().retain())); } else { throw new UnsupportedOperationException(String.format("%s frame types not supported", frame.getClass().getName())); } }
@Override protected void decode(ChannelHandlerContext ctx, WebSocketFrame frame, List<Object> out) throws Exception { if (frame instanceof CloseWebSocketFrame) { WebSocketServerHandshaker handshaker = getHandshaker(ctx.channel()); if (handshaker != null) { frame.retain(); handshaker.close(ctx.channel(), (CloseWebSocketFrame) frame); } else { ctx.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE); } return; } super.decode(ctx, frame, out); }
private void handleWebSocketFrame(final ChannelHandlerContext ctx, WebSocketFrame frame) throws JsonProcessingException { if (frame instanceof CloseWebSocketFrame) { handshaker.close(ctx.channel(), (CloseWebSocketFrame) frame.retain()).addListener(new ChannelFutureListener() { public void operationComplete(ChannelFuture future) { clientRegistry.remove(ctx); } }); } else if (frame instanceof TextWebSocketFrame) { try { HttpRequest httpRequest = httpRequestSerializer.deserialize(((TextWebSocketFrame) frame).text()); clientRegistry.put(ctx, httpRequest); sendUpdate(httpRequest, ctx); } catch (IllegalArgumentException iae) { sendMessage(ctx, ImmutableMap.<String, Object>of("error", iae.getMessage())); } } else if (frame instanceof PingWebSocketFrame) { ctx.write(new PongWebSocketFrame(frame.content().retain())); } else { throw new UnsupportedOperationException(String.format("%s frame types not supported", frame.getClass().getName())); } }
/** * Only supported TextWebSocketFrame * * @param ctx * @param frame */ private void handleWebSocketFrame(ChannelHandlerContext ctx, WebSocketFrame frame) { if (frame instanceof CloseWebSocketFrame) { this.handler.onDisConnect(this.context); this.handshaker.close(ctx.channel(), (CloseWebSocketFrame) frame.retain()); return; } if (frame instanceof PingWebSocketFrame) { ctx.channel().write(new PongWebSocketFrame(frame.content().retain())); return; } if (!(frame instanceof TextWebSocketFrame)) { throw new UnsupportedOperationException("unsupported frame type: " + frame.getClass().getName()); } this.context.setReqText(((TextWebSocketFrame) frame).text()); this.handler.onText(this.context); }
/** * Only supported TextWebSocketFrame * * @param ctx * @param frame */ private void handleWebSocketFrame(ChannelHandlerContext ctx, WebSocketFrame frame) { if (frame instanceof CloseWebSocketFrame) { this.handler.onDisConnect(this.context); this.handshaker.close(ctx.channel(), (CloseWebSocketFrame) frame.retain()); return; } if (frame instanceof PingWebSocketFrame) { ctx.channel().write(new PongWebSocketFrame(frame.content().retain())); return; } if (!(frame instanceof TextWebSocketFrame)) { throw new UnsupportedOperationException("unsupported frame type: " + frame.getClass().getName()); } this.context.setReqText(((TextWebSocketFrame) frame).text()); this.handler.onText(this.context); }
@Override protected void channelRead0(final ChannelHandlerContext ctx, final Object msg) throws Exception { final Channel ch = ctx.channel(); if (!handshaker.isHandshakeComplete()) { // web socket client connected handshaker.finishHandshake(ch, (FullHttpResponse) msg); handshakeFuture.setSuccess(); return; } if (msg instanceof FullHttpResponse) { final FullHttpResponse response = (FullHttpResponse) msg; throw new Exception("Unexpected FullHttpResponse (getStatus=" + response.status() + ", content=" + response.content().toString(CharsetUtil.UTF_8) + ')'); } // a close frame doesn't mean much here. errors raised from closed channels will mark the host as dead final WebSocketFrame frame = (WebSocketFrame) msg; if (frame instanceof TextWebSocketFrame) { ctx.fireChannelRead(frame.retain(2)); } else if (frame instanceof PingWebSocketFrame) { ctx.writeAndFlush(new PongWebSocketFrame()); }else if (frame instanceof PongWebSocketFrame) { logger.debug("Received response from keep-alive request"); } else if (frame instanceof BinaryWebSocketFrame) { ctx.fireChannelRead(frame.retain(2)); } else if (frame instanceof CloseWebSocketFrame) ch.close(); }