package cc.mrbird.febs.common.websocket; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.handler.codec.http.HttpObjectAggregator; import io.netty.handler.codec.http.HttpServerCodec; import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler; import io.netty.handler.logging.LogLevel; import io.netty.handler.logging.LoggingHandler; import io.netty.handler.stream.ChunkedWriteHandler; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class NettyWebSocketConfig { // @Value("${netty.websocket.port:9109}") // private int port; // // @Bean(name = "bossGroup", destroyMethod = "shutdownGracefully") // public EventLoopGroup bossGroup() { // return new NioEventLoopGroup(1); // } // // @Bean(name = "workerGroup", destroyMethod = "shutdownGracefully") // public EventLoopGroup workerGroup() { // return new NioEventLoopGroup(); // } // // @Bean // public ServerBootstrap serverBootstrap(EventLoopGroup bossGroup, EventLoopGroup workerGroup) { // ServerBootstrap bootstrap = new ServerBootstrap(); // bootstrap.group(bossGroup, workerGroup) // .channel(NioServerSocketChannel.class) // .option(ChannelOption.SO_BACKLOG, 128) // .childOption(ChannelOption.SO_KEEPALIVE, true) // .handler(new LoggingHandler(LogLevel.INFO)) // .childHandler(new io.netty.channel.ChannelInitializer() { // @Override // protected void initChannel(io.netty.channel.socket.SocketChannel ch) throws Exception { // ch.pipeline().addLast(new HttpServerCodec()); // ch.pipeline().addLast(new ChunkedWriteHandler()); // ch.pipeline().addLast(new HttpObjectAggregator(65536)); // ch.pipeline().addLast(new WebSocketServerProtocolHandler("/ws")); // ch.pipeline().addLast(new cc.mrbird.febs.common.websocket.WebSocketServerHandler()); // } // }); // return bootstrap; // } }