netty简介及HTTP实现Demo

96
第七感_12d9
2017.10.15 16:49* 字数 530

这篇文章主要介绍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则不存在这样的情况

netty学习
Web note ad 1