package com.xcong.excoin.netty.initalizer; import com.xcong.excoin.netty.handler.WebSocketServerHandler; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.handler.codec.http.HttpObjectAggregator; import io.netty.handler.codec.http.HttpServerCodec; import io.netty.handler.stream.ChunkedWriteHandler; import io.netty.handler.timeout.IdleStateHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * @author wzy * @email wangdoubleone@gmail.com * @date 2019-05-06 */ @Component public class WebSocketServerInitializer extends ChannelInitializer { @Autowired private WebSocketServerHandler webSocketServerHandler; @Override protected void initChannel(NioSocketChannel ch) throws Exception { ChannelPipeline cp = ch.pipeline(); // http编码器 cp.addLast(new HttpServerCodec()); // 聚合器,使用websocket会用到 cp.addLast(new HttpObjectAggregator(65536)); cp.addLast(new ChunkedWriteHandler()); // 心跳 ch.pipeline().addLast(new IdleStateHandler(0, 10, 0)); // 自定义业务handler cp.addLast(webSocketServerHandler); } }