websocket: add SendMessageReturnResponse latency reporter (#1031)

* add websocket sync request latency reporter

* add globalReporter similar to request package

* gofmt

* connection level reporter and test

* fix SetupNewConnection
This commit is contained in:
E Sequeira
2022-09-19 03:39:29 +01:00
committed by GitHub
parent e78287b26e
commit c615a79421
5 changed files with 105 additions and 6 deletions

View File

@@ -5,6 +5,7 @@ import (
"compress/flate"
"compress/gzip"
"crypto/rand"
"encoding/json"
"fmt"
"io"
"math/big"
@@ -27,7 +28,13 @@ func (w *WebsocketConnection) SendMessageReturnResponse(signature, request inter
}
defer m.Cleanup()
err = w.SendJSONMessage(request)
b, err := json.Marshal(request)
if err != nil {
return nil, fmt.Errorf("error marshaling json for %s: %w", signature, err)
}
start := time.Now()
err = w.SendRawMessage(websocket.TextMessage, b)
if err != nil {
return nil, err
}
@@ -36,6 +43,10 @@ func (w *WebsocketConnection) SendMessageReturnResponse(signature, request inter
select {
case payload := <-m.C:
if w.Reporter != nil {
w.Reporter.Latency(w.ExchangeName, b, time.Since(start))
}
return payload, nil
case <-timer.C:
timer.Stop()