Documentation
¶
Overview ¶
Package httpstat traces HTTP latency infomation (DNSLookup, TCP Connection and so on) on any Golang HTTP request. It uses the `httptrace` package, just create a `go-httpstat` powered `context.Context` and give it your `http.Request` to gain access to the latency information of the request.
Example ¶
req, err := http.NewRequest("GET", "http://deeeet.com", nil) if err != nil { log.Fatal(err) } // Create go-httpstat powered context and pass it to http.Request var result httpstat.Result ctx := httpstat.WithHTTPStat(req.Context(), &result) req = req.WithContext(ctx) client := http.DefaultClient res, err := client.Do(req) if err != nil { log.Fatal(err) } if _, err := io.Copy(ioutil.Discard, res.Body); err != nil { log.Fatal(err) } res.Body.Close() result.End(time.Now()) // Show results log.Printf("%+v", result)
Output:
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Result ¶
type Result struct { // The following are the durations for each phase DNSLookup time.Duration TCPConnection time.Duration TLSHandshake time.Duration ServerProcessing time.Duration // The following is the timeline of a request NameLookup time.Duration Connect time.Duration Pretransfer time.Duration StartTransfer time.Duration // contains filtered or unexported fields }
Result stores httpstat information.
func (*Result) ContentTransfer ¶
ContentTransfer returns the duration of content transfer time. If the request is finished it returns the content transfer time, otherwise it returns the duration from the first response byte until when the function was called.
func (*Result) End ¶
func (r *Result) End()
End sets the time when reading the response is done. This must be called after reading the response body.