首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DialContext KeepAlive与go http.Client运输IdleTimeout的差异

DialContext KeepAlive与go http.Client运输IdleTimeout的差异
EN

Stack Overflow用户
提问于 2017-10-11 10:50:52
回答 1查看 2.7K关注 0票数 6
代码语言:javascript
复制
client := &http.Client{
        Transport: &http.Transport{
            DialContext: (&net.Dialer{
                KeepAlive: 5 * time.Second,
            }).DialContext,
            IdleConnTimeout: 3 * time.Second,
        },
    }

KeepAlive和IdleConnTimeout有什么区别?

他们中的哪一个会做什么?

EN

回答 1

Stack Overflow用户

发布于 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,则表示连接仍然打开的时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46686360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档