netty核心组件
来源:互联网 发布:c4d mac 编辑:程序博客网 时间:2024/05/08 19:37
netty核心组件
- Channels
- Callbacks
- Futures
- Events
- handlers
Channels
一个Channel是java NIO的一个基本抽象。可以吧一个channel相称一个输入和输出数据的媒介,它可以被打开或者关闭。
Callbacks
一个callback就是一个方法,一个提供给另一个的方法的引用,这样可以让另一个方法在合适的时候来回调callback方法。
callbacks在很多情况下都被使用,是通知相关方某个操作完成的常用方法之一。
netty在处理事件时内部就使用了callback,当一个callback被触发,事件就会被ChannelHandler的接口处理。
例如
public class ConnectHandler extends ChannelInboundHandlerAdapter{ @Override public void channnelActive(ChannelHandlerContext ctx)throws Exception{ System.out.println(ctx.channel().remoteAddress()); }}
这就是当一个连接建立的时候channelActive被调用
Future
Future是callback的复杂方法,提供了另一个当操作完成时如何通知应用的方法。Netty有自己的ChannelFuture用于执行异步操作。
JDK 的java.util.concuurent.Future,但是这个接口实现只能手动检查操作是否完成,或者阻塞到操作完成。
ChannelFuture可以注册一个或多个ChannelFutureListener实例。监听这的callback方法在操作完成时被调用。
Events
Netty用细分的events来通知状态的变化或者操作的状况。这样就可以根据发生的events来触发合适的行为。
因为netty是网络编程框架,因此events按它们和输入或者输出数据流的关系来分类。可能被输入数据或者相关状态改变触发的events包括:
- 活跃或者停用连接
- 读书据
- 用户events
- 错误events
输出event则是会触发将来行为的操作的结果:
- 打开或者关闭到远程链接
- 写或者刷新数据到一个socket
Handlers
每一个event都可以被分配到一个用户实现的handler对象方法。
图1-3 经过一串ChannelHandler的输入输出事件
Netty的ChannelHandler提供了如图1.3中展示的handler的基本抽象。我们在适当的时候会更多地谈论到ChannelHandler,但是现在你可以认为每个handler实例就是一种响应某个具体event的callback。Netty提供了大量你可以马上拿来用的预定义handler,包括HTTP和SSL/TLS等协议的handler。在内部,ChannelHandler自己也用events和futures,和你的应用是同样抽象的消费者。
- Netty的核心组件
- Netty的核心组件
- netty核心组件
- 【死磕Netty】-----Netty的核心组件
- 【Netty in Action学习笔记】Netty核心组件概念
- Netty in Action (四)第一章节 第三部分 Netty核心组件
- netty源码分析(十三)Netty核心四大组件关系与构建方式深度解读
- netty组件
- 03 Netty核心概念
- Netty核心概念
- [netty]--核心源码类
- Netty(一)核心概念
- Netty中重要组件
- [netty核心类]--缓冲区ByteBuf
- 第三篇:Netty核心概念
- 从netty-example分析Netty组件续
- Netty的几个重要组件
- Netty的组件和设计
- CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian Linux系统 安装LNMP环境
- 百度地图 大头针设置本地图片与网络图片
- Fragment生命周期那些事
- POJ 1860 SPFA 题解
- JAVA 调用SAP端接口
- netty核心组件
- SPFA算法的两个优化
- 从windows传过来的文件拷到linux下是乱码
- CF 792B Counting-out Rhyme 模拟约舍夫环
- .NET CORE上传文件(AJAX形式)
- ubuntu 16.04 安装 Caffe + Cuda 8.0
- MySql函数, 实现Oracle中的to_data和to_char函数
- 11. Container With Most Water
- Q&A——代码加载