本小节主要想分享的是
服务器端向客户端发送goAway帧的逻辑,以及客户端是如何处理goAway帧的?
达到的效果就是关闭连接。
1、服务器端跟客户端交互处理goAway帧的流程图 |
可以通过下图,简单了解服务器端跟客户端是如何处理goAway帧,是互相交互的过程。
主要流程说明:(在启动keepalive的场景下)
服务器端在处理goAway帧时,最多会经历三个阶段:
第一阶段: |
- 服务器端向客户发送第一个goAway帧;
- 客户端接收到后:
- 更新http2Client的状态为draining,
- 将平衡器的状态由ready状态改为connecting,
- 最终导致客户端不在创建,注册新的流;
- 客户端需要判断当前是否还有流在维护,
- 如果没有的话,就关闭