Golang: Как прекратить / отменить / отменить входящий http-запрос без ответа?

Со стороны сервера мне нужно завершить / прервать запрос без какого-либо ответа клиенту, как у nginx 444.

Со стороны клиента это должно выглядеть как сброс соединения по пиру.

1 ответ

Решение

Я провел пару часов и только случайно нашел 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()
    }
}

Разрывное соединение может быть полезно в некоторых случаях для экономии процессорного времени и исходящего трафика.

Другие вопросы по тегам