List of usage examples for io.netty.handler.codec.http.websocketx WebSocketFrame release
@Override
public boolean release()
From source file:io.scalecube.socketio.pipeline.WebSocketHandler.java
License:Apache License
private void handleWebSocketFrame(ChannelHandlerContext ctx, WebSocketFrame msg) throws Exception { if (log.isDebugEnabled()) log.debug("Received {} WebSocketFrame: {} from channel: {}", getTransportType().getName(), msg, ctx.channel());//from w ww . ja va 2 s . c o m if (msg instanceof CloseWebSocketFrame) { sessionIdByChannel.remove(ctx.channel()); ChannelFuture f = ctx.writeAndFlush(msg); f.addListener(ChannelFutureListener.CLOSE); return; } else if (msg instanceof PingWebSocketFrame) { ctx.writeAndFlush(new PongWebSocketFrame(msg.content())); return; } else if (!(msg instanceof TextWebSocketFrame)) { msg.release(); log.warn(String.format("%s frame types not supported", msg.getClass().getName())); return; } TextWebSocketFrame frame = (TextWebSocketFrame) msg; Packet packet = PacketDecoder.decodePacket(frame.content()); packet.setTransportType(getTransportType()); String sessionId = sessionIdByChannel.get(ctx.channel()); packet.setSessionId(sessionId); msg.release(); ctx.fireChannelRead(packet); }
From source file:jlibs.wamp4j.netty.NettyWebSocket.java
License:Apache License
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof WebSocketFrame) { WebSocketFrame frame = (WebSocketFrame) msg; try {//from w ww. jav a2 s. co m if (frame instanceof TextWebSocketFrame || frame instanceof BinaryWebSocketFrame) { if (listener != null) { MessageType type = frame instanceof TextWebSocketFrame ? MessageType.text : MessageType.binary; is.reset(frame.content()); listener.onMessage(this, type, is); } } else if (frame instanceof PingWebSocketFrame) ctx.write(new PongWebSocketFrame(frame.content().retain())); else if (frame instanceof CloseWebSocketFrame) handshaker.close(ctx.channel(), (CloseWebSocketFrame) frame.retain()); } finally { frame.release(); } } else ctx.fireChannelRead(msg); }
From source file:org.asynchttpclient.netty.handler.WebSocketHandler.java
License:Open Source License
@Override public void handleRead(Channel channel, NettyResponseFuture<?> future, Object e) throws Exception { if (e instanceof HttpResponse) { HttpResponse response = (HttpResponse) e; if (logger.isDebugEnabled()) { HttpRequest httpRequest = future.getNettyRequest().getHttpRequest(); logger.debug("\n\nRequest {}\n\nResponse {}\n", httpRequest, response); }/*from www . j av a2 s .c om*/ WebSocketUpgradeHandler handler = WebSocketUpgradeHandler.class.cast(future.getAsyncHandler()); HttpResponseStatus status = new NettyResponseStatus(future.getUri(), config, response, channel); HttpResponseHeaders responseHeaders = new HttpResponseHeaders(response.headers()); if (!interceptors.exitAfterIntercept(channel, future, handler, response, status, responseHeaders)) { Channels.setAttribute(channel, new UpgradeCallback(future, channel, response, handler, status, responseHeaders)); } } else if (e instanceof WebSocketFrame) { final WebSocketFrame frame = (WebSocketFrame) e; WebSocketUpgradeHandler handler = (WebSocketUpgradeHandler) future.getAsyncHandler(); NettyWebSocket webSocket = (NettyWebSocket) handler.onCompleted(); if (webSocket != null) { handleFrame(channel, frame, handler, webSocket); } else { logger.debug("Frame received but WebSocket is not available yet, buffering frame"); frame.retain(); Runnable bufferedFrame = new Runnable() { public void run() { try { // WebSocket is now not null NettyWebSocket webSocket = (NettyWebSocket) handler.onCompleted(); handleFrame(channel, frame, handler, webSocket); } catch (Exception e) { logger.debug("Failure while handling buffered frame", e); handler.onFailure(e); } finally { frame.release(); } }; }; handler.bufferFrame(bufferedFrame); } } else { logger.error("Invalid message {}", e); } }