Netty的深入浅出--1.项目初次尝试
创建好项目(项目采用的是gradle管理器):
NioEventLoopGroup(线程组):简单来说就是一个循环;
bossGroup不断接收信息,但是不进行任何处理;
workerGroup对bossGroup接收到的数据进行处理。
其实如果一个线程组也能完成接收然后处理,在返回给前端,但是真正意义上来说,这样并不符合编程规范。所以netty规定使用两个线程组来进行处理。
ServerBootstrap:启动服务端的代码
.group接收两个参数:
进行管道处理 :
创建管道管道初始化器TestServerInitializer.java
ChannelPipeline在管道中充当连接器角色
自定义一个自己的处理器:读取客服端发过来的请求,并且处理客户端请求,返回给客户端
ByteBuf:将要返回的 数据放入到缓存中,并且自定义好编码格式。
返回响应:
设置响应头信息:
ctx:一定要调用writeAndFlush方法,这个方法是将数据写到缓存中,返回刷新
回到管道处理,将自定义的管道处理器加入到管道中,这是的顺序是,HttpServerCodec()、TestHttpServerHandler():
回到主方法中,将我们定义好的管道处理器集合TestServerInitializer放入到线程组中
绑定端口同步:
关闭缓存流:
关闭线程组:
解决exceptionCaghut异常:
然后去浏览器访问就ok了