前面通过源码分析了服务端启动时做了以下这些事:
- 初始化 channel 注册到 eventLoop 的 selector 上
- 触发 handlerAdded、ChannelRegistered 事件
- 进行端口绑定
- 触发 ChannelActive 事件,修改 selectionKey 的 interestOps 为 OP_ACCEPT
客户端启动时做了以下这些事:
- 初始化 channel 注册到 eventLoop 的 selector 上
- 触发 handlerAdded、ChannelRegistered 事件
- 发送连接请求,修改 selectionKey 的 interestOps 为 OP_CONNECT
- 连接建立后,触发 ChannelActive 事件,修改 selectionKey 的 interestOps 为 OP_READ
但是并没有去研究 Netty 的核心 Reactor 线程模型是什么样的,以及服务端如何接收一个客户端新连接的,现在我们通过跟踪源码来了解一下。