001package org.xbib.elasticsearch.http.netty; 002 003import org.jboss.netty.channel.ChannelHandlerContext; 004import org.jboss.netty.channel.ExceptionEvent; 005import org.jboss.netty.channel.MessageEvent; 006import org.jboss.netty.handler.codec.http.HttpRequest; 007import org.jboss.netty.handler.codec.http.websocketx.WebSocketFrame; 008 009/** 010 * Netty implementation for a WebSocket request handler. 011 * It is based on the HTTP request handler. 012 */ 013public class NettyWebSocketRequestHandler extends NettyHttpRequestHandler { 014 015 public NettyWebSocketRequestHandler(NettyWebSocketServerTransport serverTransport) { 016 super(serverTransport); 017 } 018 019 @Override 020 public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { 021 Object msg = e.getMessage(); 022 if (msg instanceof HttpRequest) { 023 super.messageReceived(ctx, e); 024 } else if (msg instanceof WebSocketFrame) { 025 serverTransport.frame(handshaker, (WebSocketFrame) msg, ctx); 026 } 027 } 028 029 @Override 030 public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { 031 serverTransport.exceptionCaught(ctx, e); 032 e.getChannel().close(); 033 } 034 035}