ChannelHandle 类
ChannelInboundHandle
: 处理进来的连接以及消息,一般用在服务端
SimpleChannelInboundHandle
:ChannelInboundHandle
的子类,在方法channelRead0()
中实现了自动释放内存,一般自己创建ChannelHandle
直接实现这个类即可
ChannelOutboundHanle
:处理出去的消息,一般用在客户端
BootStrap
ServerBootStrap
:服务端启动
ServerBootStrap botStrap = new ServerBootStrap();
NioEventLoopGroup bossGroup = new NioEventLoopGroup();
NioEventLoopGroup workGroup = new NioEventLoopGroup();
bootStrap.group(boosGroup, workGroup)
一般使用两个
EventLoopGroup
,一个用来处理进入的连接,一个用来处理已经连接的channel
由bossGroup
处理新来的连接,连接成功后,交给workGroup
处理
为了防止在处理channel
的 io 进程的时候有连接进来,从而阻塞,所以使用两个 group 处理
使用两个 Gorup 具体实现细节可以看这篇文章 Netty线程模型--掘金
1.1. bootStrap.childHanle()
用来新加入的 channel
进行处理
比如:
>>编码器、解码器(对 ByteBuf 进行编码解码 成能看懂的东西)
协议(new WebSocketServerProtocolHandler("/ws", "WebSocket", true, 65536 * 10)
)
自定义的ChannelHandle
(实现ChannelHandle
)
1.2. bootStrap.option()
方法
通过该方法实现一些额外的定义
具体的定义都在ChannelOption
中,该类实现了Constant
,只用来定义值,不进行任何处理
1.3. channel.attr()
方法
该方法可以给
channel
设置一些属性
Channel channel = ctx.channel();
AttributeKey<String> key = AttributeKey.valueOf("id");
ctx.channel().attr(key).setIfAbsent("0001");