Netty中的ChannelPipeline、ChannelHandler和ChannelHandlerContext是非常核心的组件。
一、三者间的关系 每当ServerSocket创建一个新的连接,就会创建一个Socket,对应的就是一个目标客户端;每一个新创建的Socket都会分配一个全新的ChannelPipeline;每个ChannelPipeline内部都含有多个ChannelHandlerContext,这些ChannelHandlerContext组成了一个双向链表,用于包装我们调用addLast()方法时添加的ChannelHandler。
ChannelSocket和ChannelPipeline是一对一的关联关系,而ChannlePipeline内部的多个ChannelHandlerContext形成了一个链表,ChannelHandlerContext只是对ChannelHandler的封装。
当一个请求进来的时候,会进入ChannelSocket对应的ChannelPipeline,并经过ChannelPipeline中所有的ChannelHandler,这里使用了过滤器的设计模式。
ChannelPipeline接口中的核心方法如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)