引言
在 Netty 的引导程序中,启动一个服务端应用是一个十分简单的事情。配置链接类对象,配置子类初始化 ChannelHandler
,再调用 bind
方法绑定端口号,一个服务端应用就启动完毕了,接着只需要等待客户端发送连接请求,程序就能自动为我们完成客户端接入。看着是很简单的过程,Netty 在背后却是做了相当多的工作,本文就以 ServerBootStrap
启动的时序动作为分析入手点,剖析在引导程序启动中,涉及到的具体代码内容。
总体时序流程
使用 ServerBootStrap
的 bind
方法执行对端口的监听,这里面涉及到好几个步骤,简单而言包括有:
- 按照给定的
Channel
类,实例化一个对象。 - 将实例化的
Channel
对象注册到EventLoop
上。 - 设置
Channel
的绑定监听地址,并且更新Channel
对象的SelectionKey
的事件关注集。
整体的时序如下