github.com/qiniu/go-sdk/v7@v7.27.0/sms/rpc/transport.go (about)

     1  package rpc
     2  
     3  import (
     4  	"net"
     5  	"net/http"
     6  	"time"
     7  )
     8  
     9  // DefaultDailTimeout 默认超时时间: 5秒
    10  const DefaultDailTimeout = time.Duration(5) * time.Second
    11  
    12  // DefaultTransport 默认 HTTP Transport
    13  var DefaultTransport = NewTransportTimeout(DefaultDailTimeout, 0)
    14  
    15  // NewTransportTimeout 返回指定超时时间的 Transport 对象
    16  func NewTransportTimeout(dial, resp time.Duration) http.RoundTripper {
    17  	t := &http.Transport{ // DefaultTransport
    18  		Proxy:               http.ProxyFromEnvironment,
    19  		TLSHandshakeTimeout: 10 * time.Second,
    20  	}
    21  	t.Dial = (&net.Dialer{
    22  		Timeout:   dial,
    23  		KeepAlive: 30 * time.Second,
    24  	}).Dial
    25  	t.ResponseHeaderTimeout = resp
    26  	return t
    27  }
    28  
    29  // NewTransportTimeoutWithConnsPool 返回指定超时时间和最大连接主机数的 Transport 对象
    30  func NewTransportTimeoutWithConnsPool(dial, resp time.Duration, poolSize int) http.RoundTripper {
    31  	t := &http.Transport{ // DefaultTransport
    32  		Proxy:               http.ProxyFromEnvironment,
    33  		TLSHandshakeTimeout: 10 * time.Second,
    34  		MaxIdleConnsPerHost: poolSize,
    35  	}
    36  	t.Dial = (&net.Dialer{
    37  		Timeout:   dial,
    38  		KeepAlive: 30 * time.Second,
    39  	}).Dial
    40  	t.ResponseHeaderTimeout = resp
    41  	return t
    42  }