@Override public Object goAwayMessage() { return new TextWebSocketFrame("_CLOSE_"); }
@Override public Object serverClosingConnectionMessage(int statusCode, String reasonText) { return new CloseWebSocketFrame(statusCode, reasonText); }
private void releaseBufferedFrames() { if (bufferedFrames != null) { for (WebSocketFrame frame : bufferedFrames) { frame.release(); } bufferedFrames = null; } }
protected WebSocketFrame toFrame(WebSocketMessage message) { ByteBuf byteBuf = NettyDataBufferFactory.toByteBuf(message.getPayload()); if (WebSocketMessage.Type.TEXT.equals(message.getType())) { return new TextWebSocketFrame(byteBuf); } else if (WebSocketMessage.Type.BINARY.equals(message.getType())) { return new BinaryWebSocketFrame(byteBuf); } else if (WebSocketMessage.Type.PING.equals(message.getType())) { return new PingWebSocketFrame(byteBuf); } else if (WebSocketMessage.Type.PONG.equals(message.getType())) { return new PongWebSocketFrame(byteBuf); } else { throw new IllegalArgumentException("Unexpected message type: " + message.getType()); } }
@Override protected WebSocketFrame beginAggregation(WebSocketFrame start, ByteBuf content) throws Exception { if (start instanceof TextWebSocketFrame) { return new TextWebSocketFrame(true, start.rsv(), content); } if (start instanceof BinaryWebSocketFrame) { return new BinaryWebSocketFrame(true, start.rsv(), content); } // Should not reach here. throw new Error(); } }
public void upgradePipelineForWebSockets(ChannelPipeline pipeline) { pipeline.addAfter(HTTP_CLIENT_CODEC, WS_ENCODER_HANDLER, new WebSocket08FrameEncoder(true)); pipeline.addAfter(WS_ENCODER_HANDLER, WS_DECODER_HANDLER, new WebSocket08FrameDecoder(false, config.isEnableWebSocketCompression(), config.getWebSocketMaxFrameSize())); if (config.isAggregateWebSocketFrameFragments()) { pipeline.addAfter(WS_DECODER_HANDLER, WS_FRAME_AGGREGATOR, new WebSocketFrameAggregator(config.getWebSocketMaxBufferSize())); } pipeline.remove(HTTP_CLIENT_CODEC); }
@Override protected boolean isAggregated(WebSocketFrame msg) throws Exception { if (msg.isFinalFragment()) { return !isContentMessage(msg); } return !isStartMessage(msg) && !isContentMessage(msg); }
@Override protected WebSocketFrameDecoder newWebsocketDecoder() { return new WebSocket08FrameDecoder(true, allowExtensions, maxFramePayloadLength(), allowMaskMismatch); }
@Override protected WebSocketFrameDecoder newWebsocketDecoder() { return new WebSocket08FrameDecoder(false, allowExtensions, maxFramePayloadLength(), allowMaskMismatch); }
@Override protected boolean isLastContentMessage(ContinuationWebSocketFrame msg) throws Exception { return isContentMessage(msg) && msg.isFinalFragment(); }
@Override protected WebSocketFrameDecoder newWebsocketDecoder() { return new WebSocket13FrameDecoder(true, allowExtensions, maxFramePayloadLength(), allowMaskMismatch); }
@Override protected WebSocketFrameDecoder newWebsocketDecoder() { return new WebSocket13FrameDecoder(false, allowExtensions, maxFramePayloadLength(), allowMaskMismatch); }
@Override protected WebSocketFrameDecoder newWebsocketDecoder() { return new WebSocket00FrameDecoder(maxFramePayloadLength()); }
@Override protected WebSocketFrameDecoder newWebsocketDecoder() { return new WebSocket00FrameDecoder(maxFramePayloadLength()); }
@Override protected WebSocketFrameDecoder newWebsocketDecoder() { return new WebSocket07FrameDecoder(false, allowExtensions, maxFramePayloadLength(), allowMaskMismatch); }
@Override protected WebSocketFrameDecoder newWebsocketDecoder() { return new WebSocket07FrameDecoder(true, allowExtensions, maxFramePayloadLength(), allowMaskMismatch); }
@Override public ContinuationWebSocketFrame touch(Object hint) { super.touch(hint); return this; } }
@Override public Object goAwayMessage() { return new TextWebSocketFrame("_CLOSE_"); }
@Override public Object serverClosingConnectionMessage(int statusCode, String reasonText) { return new CloseWebSocketFrame(statusCode, reasonText); }
@Override public BinaryWebSocketFrame touch() { super.touch(); return this; }