grpc-go源码剖析与实战|grpc-go源码剖析七十四之什么情况下服务器端通知客户端,双方关闭链接?(goAway帧处理逻辑)

【grpc-go源码剖析与实战|grpc-go源码剖析七十四之什么情况下服务器端通知客户端,双方关闭链接?(goAway帧处理逻辑)】本小节主要想分享的是
服务器端向客户端发送goAway帧的逻辑,以及客户端是如何处理goAway帧的?
达到的效果就是关闭连接。

1、服务器端跟客户端交互处理goAway帧的流程图
可以通过下图,简单了解服务器端跟客户端是如何处理goAway帧,是互相交互的过程。
grpc-go源码剖析与实战|grpc-go源码剖析七十四之什么情况下服务器端通知客户端,双方关闭链接?(goAway帧处理逻辑)
文章图片

主要流程说明:(在启动keepalive的场景下)
服务器端在处理goAway帧时,最多会经历三个阶段:
第一阶段:
  • 服务器端向客户发送第一个goAway帧;
  • 客户端接收到后:
    • 更新http2Client的状态为draining,
    • <

    推荐阅读