Golang:如何在没有响应的情况下终止/中止/取消入站http请求?

时间:2016-04-07 17:54:19

标签: go request no-response

从服务器端,我需要终止/中止请求,而不对nginx's 444等客户端做出任何响应。

从客户端看,它应该看起来像是通过对等方重置连接。

1 个答案:

答案 0 :(得分:4)

我花了几个小时,只是偶然发现http.Hijacker允许从http.ResponseWriter访问网络连接:

h := func(w http.ResponseWriter, r *http.Request) {
    if wr, ok := w.(http.Hijacker); ok {
        conn, _, err := wr.Hijack()
        if err != nil {
           fmt.Fprint(w, err)
        }
        conn.Close()
    }
}

在某些情况下,终止连接可能有助于节省CPU时间和出站流量。