Я хочу закрывать клиентское соединение http2 после каждого запроса (например, отключение соединения keep-alive в http1.1). Я попытался добавить заголовок Connection: close
, но это дает http2: ошибка клиента не может быть использована ошибка.
Я попытался использовать request.Close = true, как указано в документе, но все равно получаю ошибку.
Ниже приведен фрагмент кода, который я использую:
func main() {
enableCompression := false
transport2 := &http2.Transport{
DisableCompression: !enableCompression,
AllowHTTP: true,
DialTLS: func(network, addr string, cfg *tls.Config) (net.Conn, error) {
return net.Dial(network, addr)
},
}
// Create http client
client := http.Client{
Transport: transport2,
Timeout: time.Duration(1 * time.Second),
}
var err error
var request *http.Request
if request, err = createRequest(); err == nil {
request.Close = true
var response *http.Response
if response, err = client.Do(request); err == nil {
fmt.Println(response)
} else {
fmt.Println("error: ", err)
}
}
}
func createRequest() (request *http.Request, err error) {
if request, err = http.NewRequest("GET", "http://0.0.0.0:1010/hello/sayHello", nil); err == nil {
fmt.Println(request)
}
return
}
Это выдает ошибку: http2: клиент не может использоваться (превышено значение Client.Timeout при ожидании заголовков)
Чего мне не хватает?