client := &http.Client{
Transport: &http.Transport{
DialContext: (&net.Dialer{
KeepAlive: 5 * time.Second,
}).DialContext,
IdleConnTimeout: 3 * time.Second,
},
}KeepAlive和IdleConnTimeout有什么区别?
他们中的哪一个会做什么?
发布于 2020-02-24 16:15:08
从文件中:
https://github.com/golang/go/blob/go1.13.8/src/net/dial.go#L72
KeepAlive指定活动网络连接的活动探测之间的间隔.如果为零,则使用默认值(当前为15秒)发送活动探针,如果协议和操作系统支持的话。不支持“保持生命”的网络协议或操作系统忽略此字段。如果为阴性,则禁用“保持活动”探针。
因此,如果您将KeepAlive设置为大于0,它将表示从下一个探测到的时间,以便了解网络连接是否仍然处于活动状态。
从另一边,IdleConnTimeout
https://github.com/golang/go/blob/go1.13.8/src/net/dial.go#L72
IdleConnTimeout是空闲(保持活动)连接在关闭自己之前保持空闲的最长时间。零意味着没有限制。
因此,如果设置大于0的IdleConnTimeout,则表示连接仍然打开的时间。
https://stackoverflow.com/questions/46686360
复制相似问题