Go发起HTTP2.0请求流程分析(前篇)(3)

2023-04-30 来源:飞速影视
结合前面的分析,pconn.alt在server和client都支持http2协议的情况下是不为nil的。所以,http2的请求会走pconn.alt.RoundTrip(req)分支,也就是说http2的请求流程就被http2Transport接管啦。
(*http2Transport).NewClientConn
(*http2Transport).NewClientConn内部会调用t.newClientConn(c, t.disableKeepAlives())。
因为本节内容较多,所以笔者不再一次性贴出源码,而是按关键步骤分析并分块儿贴出源码。
1、初始化一个http2ClientConn:

Go发起HTTP2.0请求流程分析(前篇)


上面的源码新建了一个默认的http2ClientConn。
initialWindowSize:初始化窗口大小为65535,这个值之后会初始化每一个数据流可发送的数据窗口大小。
maxConcurrentStreams:表示每个连接上允许最多有多少个数据流同时传输数据。
streams:当前连接上的数据流。
singleUse: 控制http2的连接是否允许多个数据流共享,其值由t.disableKeepAlives()控制。
2、创建一个条件锁并且新建Writer&Reader。

Go发起HTTP2.0请求流程分析(前篇)


新建Writer&Reader没什么好说的,需要注意的是cc.flow.add(int32(http2initialWindowSize))。
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号