handler()とchildHandler()、childOption()とoptionの違い
1478 ワード
* */
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
// ,
ServerBootstrap serverBootstrap = new ServerBootstrap();
//
serverBootstrap.group(bossGroup,workerGroup)//
.channel(NioServerSocketChannel.class)// NioSocketChannel
.option(ChannelOption.SO_BACKLOG,128)//
.childOption(ChannelOption.SO_KEEPALIVE,true)//
.childHandler(new ChannelInitializer() {//
メソッドserverBootStrap.group()
/**
* Set the {@link EventLoopGroup} for the parent (acceptor) and the child (client). These
* {@link EventLoopGroup}'s are used to handle all the events and IO for {@link ServerChannel} and
* {@link Channel}'s.
*/
public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup childGroup) {
childHandler()もchildOption()もworkerGroup(つまりgroupメソッドのchildGroupパラメータ)に設定されており、option()もhandler()もbossGroup(つまりgroupメソッドのparentGroupパラメータ)に設定されています.
option()とhandler()はserver起動時に設定と呼び出しを行い、childHandler()とchildOption()は接続確立時に設定と呼び出しを行う方法もあります.実はすべて正しいです.
bossGroupは、サーバが起動するとすぐに作業を開始し、クライアントの接続要求を傍受します.接続が確立されるとworkGroupにトランザクションが渡され、2つは異なる角度から説明されます.