server端如何提前结束一个http请求

smoothie · 2015-09-14 07:32:23 · 4213 次点击

应该没问题camlistore中有类似用法

#2
更多评论

找到了一种方法,测试有效,只是不知道会不会有其他问题 http.ResponseWriter实现了http.Hijacker的接口,Hijacker中的Hijack方法返回一个net.Conn对象,利用net.Conn的Close方法关闭连接

func server(w http.ResponseWriter, r *http.Request) {
    //正常的处理逻辑
    //下面关闭连接
    if hj, ok := w.(http.Hijacker); ok {
        conn, _, _ := hj.Hijack()
        conn.Close()
    }
    //连接关闭后的处理,比如记录日志
}
#1