这篇文章主要介绍netty的三大主要功能,开发流程,以及三大功能之一的HTTP实现Demo。
一、准备
本系列开发基于netty的4.1.10.Final发型版本,pom依赖为:
二、netty的主要功能
netty的主要功能有三大点:
1.作为http服务器,处理请求和响应,使用方式和springmvc/strus2类似,但是netty并没有实现servlet标准(实现servlet标准可以实现参数绑定,方便获取参数),也没有实现路由规则 --> 这就使得netty的吞吐量比tomcat这些更高,但开发效率相对低一些
2.socket开发,rpc方式,支持自定义协议
3.netty支持类似websocket的长连接开发,http2.0之前都是短连接(过一段时间自动断掉)
三、netty的开发流程
无论是基于netty进行HTTP服务器开发,还是进行socket开发,抑或是长连接开发,netty代码的开发流程主要有以下三个步骤:
1.编写服务器,定义boosGroup和workerGroup,启动ServerBootstrap
2.在服务器里面使用Handler或childHandler去启动Initailizer,在Initailizer里关联着请求的诸多handler
3.在handler里面覆写netty提供的特定的事件回调方法
四、基于netty的HTTP服务端开发demo
1.主函数
说明:
1.定义bossGroup及workerGroup,其中boosGroup负责接收连接并交由workerGroup进行处理,两者均为死循环以便一直处理请求
2.启动ServerBootstrap,其中childHandler负责处理workerGroup,如果使用handler方法则处理bossGroup
2.Initailizer函数
说明:
1.ChannelPipieline为管道处理,可以使用addLast方法为里面添加多个待处理的handler
2.第一个pipeline一般为编解码格式
3.Handler处理
说明:
1.在Chrome打开localhost:8899/时同时会去执行localhost:8899/favicon.ico去获取图标,并且不会closechannel,直接curl则不存在这样的情况