package org.mobicents.tools.http.balancer; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.handler.codec.http.HttpChunkAggregator; import org.jboss.netty.handler.codec.http.HttpRequestDecoder; import org.jboss.netty.handler.codec.http.HttpResponseEncoder; import org.jboss.netty.handler.codec.http.websocketx.WebSocket13FrameDecoder; import org.jboss.netty.handler.codec.http.websocketx.WebSocket13FrameEncoder; /** * @author <a href="mailto:gvagenas@gmail.com">gvagenas</a> */ public class WebsocketModifyServerPipelineFactory { /** * Upgrade the Server ChannelPipelineFactory. This method should be called from the HttpResponseHandler.messageReceived(ChannelHandlerContext, MessageEvent) * when the handler detects that the response contains WebSocket header "Sec-WebSocket-Protocol" * * @param ChannelPipeline p * @param String WebSocket version * */ public void upgradeServerPipelineFactory(ChannelPipeline p, String wsVersion) { if (p.get(HttpChunkAggregator.class) != null) { p.remove(HttpChunkAggregator.class); } p.get(HttpRequestDecoder.class).replace("wsdecoder", new WebSocket13FrameDecoder(true, true, Long.MAX_VALUE)); p.replace(HttpResponseEncoder.class, "wsencoder", new WebSocket13FrameEncoder(false)); } }