@Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { if (e.getMessage() instanceof WebSocketFrame) { WebSocketFrame frame = (WebSocketFrame) e.getMessage(); if (frame instanceof CloseWebSocketFrame) { WebSocketServerHandshaker handshaker = getHandshaker(ctx); handshaker.close(ctx.getChannel(), (CloseWebSocketFrame) frame); return; } else if (frame instanceof PingWebSocketFrame) { ctx.getChannel().write(new PongWebSocketFrame(frame.getBinaryData())); return; } } ctx.sendUpstream(e); }
if (currentFrame == null) { tooLongFrameFound = false; if (msg.isFinalFragment()) { return msg; ChannelBuffer buf = msg.getBinaryData(); currentFrame = new TextWebSocketFrame(true, msg.getRsv(), buf); } else if (msg instanceof BinaryWebSocketFrame) { currentFrame = new BinaryWebSocketFrame(true, msg.getRsv(), buf); } else { throw new IllegalStateException( if (msg.isFinalFragment()) { currentFrame = null; ChannelBuffer content = currentFrame.getBinaryData(); if (content.readableBytes() > maxFrameSize - msg.getBinaryData().readableBytes()) { tooLongFrameFound = true; throw new TooLongFrameException( " bytes."); currentFrame.setBinaryData(ChannelBuffers.wrappedBuffer(content, msg.getBinaryData())); if (msg.isFinalFragment()) { WebSocketFrame currentFrame = this.currentFrame; this.currentFrame = null;
ChannelBuffer data = frame.getBinaryData(); if (data == null) { data = ChannelBuffers.EMPTY_BUFFER; if (frame.isFinalFragment()) { b0 |= 1 << 7; b0 |= frame.getRsv() % 8 << 4; b0 |= opcode % 128;
webSocket.onClose(closeFrame.getStatusCode(), closeFrame.getReasonText()); } else if (frame.getBinaryData() != null) { HttpChunk webSocketChunk = new HttpChunk() { private ChannelBuffer content = frame.getBinaryData(); NettyResponseBodyPart part = new NettyResponseBodyPart(null, webSocketChunk, frame.isFinalFragment()); handler.onBodyPartReceived(part);
@Override public boolean isLast() { return frame.isFinalFragment(); }
webSocket.onClose(closeFrame.getStatusCode(), closeFrame.getReasonText()); } else if (frame.getBinaryData() != null) { HttpChunk webSocketChunk = new HttpChunk() { private ChannelBuffer content = frame.getBinaryData(); NettyResponseBodyPart part = new NettyResponseBodyPart(null, webSocketChunk, frame.isFinalFragment()); handler.onBodyPartReceived(part);
@Override public boolean isLast() { return frame.isFinalFragment(); }
webSocket.onClose(closeFrame.getStatusCode(), closeFrame.getReasonText()); } else if (frame.getBinaryData() != null) { HttpChunk webSocketChunk = new HttpChunk() { private ChannelBuffer content = frame.getBinaryData(); NettyResponseBodyPart part = new NettyResponseBodyPart(null, webSocketChunk, frame.isFinalFragment()); handler.onBodyPartReceived(part);
if (frame instanceof TextWebSocketFrame) { ChannelBuffer data = frame.getBinaryData(); ChannelBuffer encoded = channel.getConfig().getBufferFactory() .getBuffer(data.order(), data.readableBytes() + 2); } else if (frame instanceof CloseWebSocketFrame) { ChannelBuffer data = frame.getBinaryData(); ChannelBuffer encoded = channel.getConfig().getBufferFactory().getBuffer(data.order(), 2); encoded.writeByte((byte) 0xFF); } else { ChannelBuffer data = frame.getBinaryData(); int dataLen = data.readableBytes(); ChannelBuffer encoded = channel.getConfig().getBufferFactory().getBuffer(data.order(), dataLen + 5);
@Override public boolean isLast() { return frame.isFinalFragment(); }
webSocket.onClose(closeFrame.getStatusCode(), closeFrame.getReasonText()); } else if (frame.getBinaryData() != null) { HttpChunk webSocketChunk = new HttpChunk() { private ChannelBuffer content = frame.getBinaryData(); NettyResponseBodyPart part = new NettyResponseBodyPart(null, webSocketChunk, frame.isFinalFragment()); handler.onBodyPartReceived(part);
private Object getData(WebSocketFrame frame) { if (frame instanceof TextWebSocketFrame) { return ((TextWebSocketFrame) frame).getText(); } else { return frame.getBinaryData(); } } }
@Override public boolean isLast() { return frame.isFinalFragment(); }
@Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { Object msg = e.getMessage(); if (msg instanceof HttpRequest) { handleHttpRequest(ctx, e.getChannel(), (HttpRequest) msg); } else if (msg instanceof WebSocketFrame) { WebSocketFrame wsf = (WebSocketFrame) msg; transportMetrics.messagesReceived.mark(); if (wsf.getBinaryData() != null) { transportMetrics.messagesReceivedSize.update(wsf.getBinaryData().readableBytes()); } handleWebSocketFrame(ctx, e.getChannel(), wsf); } else { throw new IOException("Unknown frame type: " + msg.getClass().getSimpleName()); } }
private void websocketFrameReceived(ChannelHandlerContext ctx, WebSocketFrame webSocketFrame) { Http.Inbound inbound = channels.get(ctx); // Check for closing frame if (webSocketFrame instanceof CloseWebSocketFrame) { this.handshaker.close(ctx.getChannel(), (CloseWebSocketFrame) webSocketFrame); } else if (webSocketFrame instanceof PingWebSocketFrame) { ctx.getChannel().write(new PongWebSocketFrame(webSocketFrame.getBinaryData())); } else if (webSocketFrame instanceof BinaryWebSocketFrame) { inbound._received(new Http.WebSocketFrame(webSocketFrame.getBinaryData().array())); } else if (webSocketFrame instanceof TextWebSocketFrame) { inbound._received(new Http.WebSocketFrame(((TextWebSocketFrame) webSocketFrame).getText())); } }
public void frame(WebSocketServerHandshaker handshaker, WebSocketFrame frame, ChannelHandlerContext context) { Channel channel = context.getChannel(); if (frame instanceof TextWebSocketFrame) { text((TextWebSocketFrame) frame, channel); } else if (handshaker != null && frame instanceof CloseWebSocketFrame) { handshaker.close(context.getChannel(), (CloseWebSocketFrame) frame); presence(Presence.DISCONNECTED, null, channel); } else if (frame instanceof PingWebSocketFrame) { channel.write(new PongWebSocketFrame(frame.getBinaryData())); } }
private void handleWebSocketFrame(ChannelHandlerContext ctx, Channel channel, WebSocketFrame frame) throws IOException { // Check for closing frame if (frame instanceof CloseWebSocketFrame) { handshaker.close(ctx.getChannel(), (CloseWebSocketFrame) frame); return; } else if (frame instanceof PingWebSocketFrame) { ctx.getChannel().write(new PongWebSocketFrame(frame.getBinaryData())); return; } else if (!(frame instanceof TextWebSocketFrame)) { throw new UnsupportedOperationException(String.format("%s frame types not supported", frame.getClass().getName())); } String request = ((TextWebSocketFrame) frame).getText(); logger.debug(String.format("Channel %s received '%s'", ctx.getChannel().getId(), request)); SockJsMessage jsMessage = new SockJsMessage(request); ctx.sendUpstream(new UpstreamMessageEvent(channel, jsMessage, channel.getRemoteAddress())); }
return; } else if (frame instanceof PingWebSocketFrame) { ctx.getChannel().write(new PongWebSocketFrame(frame.getBinaryData())); return; } else if (frame instanceof TextWebSocketFrame) { ChannelBuffer payload = frame.getBinaryData(); if (frame.getBinaryData().readableBytes() == 0) { return;