一、介绍出入站
上图来说明这个概念:
- 出入站是一个相对的概念。例如:客户端请求到服务器时,站在客户端看,就是出战;站在服务器端看,就是入站。
- Netty中出入站的实现由下面的这个图说明:
-
我们在设置handler去进行业务操作时,inHandler和outHandler的特点如下:
- 先设置的inHandler先调用;先设置的outHandler后调用
- 有inHandler和outHandler组成的混合的handler处理链,如何去调用和传递结果,如下图的处理链做如下说明:(1)如果是一个入站操作,会先后调用3、5并将结果前后传递;(2)如果是一个出站操作,会先后调用4、2、1并将结果前后传递;(3)入站操作时,如果在3出使用writeandflush方法返回结果时,调用的出站handler为2、1
1、out -- 2、out -- 3、in -- 4、out -- 5、in
二、编解码
上面介绍了出入站的概念,下面就可以对编解码进行说明。
Netty中的编解码与出入站类似,也是一个相对的概念。还是用下面的图说明:如果客户端请求到服务器端,在客户端处就要先进行编码,然后在服务端处进行解码;反过来时也类似。
Netty常用的编解码器:
| 名称 | 用途 |
|---|---|
| ByteToMessageCodec | 解码器 |
| MessageToByteEncoder | 编码器 |
| HttpObjectDecoder | http的解码器 |