1. 程式人生 > >Golang http短連線

Golang http短連線

客戶端關閉Http連線

在客戶端關閉 http 連線

  1. 直接在請求後關閉連線
func main() {
    req, err := http.NewRequest("GET", "http://localhost",nil )
    if err != nil {
        log.Errorf("")
    }
    req.Close = true
    resp, err := http.Client.Do(req)
    ...
}
  1. 在頭部設定連線狀態為關閉
func main() {
    req, err := http.NewRequest("GET", "http://localhost",nil )
    if err != nil {
        log.Errorf("")
    }
    req.Header.Add("Connection", "close")
    resp, err := http.Client.Do(req)
    ...
}
  1. 使用 Transport 取消 HTTP利用連線
func main() {
    tr := http.Transport{DisableKeepAlives: true}
    client := http.Client{Transport: &tr}

    resp, err := client.Get("https://golang.google.cn/")
    if resp != nil {
        defer resp.Body.Close()
    }
    checkError(err)

    fmt.Println(resp.StatusCode)    // 200

    body, err := ioutil.ReadAll(resp.Body)
    checkError(err)

    fmt.Println(len(string(body)))
}

伺服器端設定短連線

func main(){
    server := &http.Server{
		Handler:handle,
		ReadTimeout:  20 * time.Second,
		WriteTimeout: 20 * time.Second,
	}
	listen, err := net.Listen("tcp4",s.addr)
	if err != nil  {
		logger.Errorf("Failed to listen,err:%s",err.Error())
		panic(err)
	}
	server.SetKeepAlivesEnabled(false)
	err = server.Serve(listen)
}

參考: