1 ServerBootstrap bootstrap = new ServerBootstrap(); 2 try { 3 bootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class) 4 .childHandler(new ChannelInitializer() { 5 @Override 6 protected void initChannel(Channel ch) throws Exception { 7 ch.pipeline().addLast( 8 new HttpServerCodec(),new HttpObjectAggregator(LOCALPORT), // 将多个消息转换为单一的一个FullHttpRequest 9 new HttpRequestDecoder(), 10 new ServcerHandler() // 自己实现的Handler 11 ); 12 } 13 }).childOption(ChannelOption.AUTO_READ, false) 14 .bind(LOCALPORT).sync().channel().closeFuture().sync();
因为设置了
childOption(ChannelOption.AUTO_READ, false)
所以在执行完
public void channelActive(ChannelHandlerContext ctx)
方法后,不会自动执行
public void channelRead(ChannelHandlerContext ctx, Object msg) 方法;
需要在channelActive中添加这行语句才会调用channelRead方法:
ctx.channel().read();