From 13614f4e1ce842cb4dffd5e9b27db433b980e65d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Sun, 11 Dec 2016 20:16:30 +0200 Subject: [PATCH] ethstats: fix timestamps and add custom proto support --- ethstats/ethstats.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ethstats/ethstats.go b/ethstats/ethstats.go index a5fa84468..19f9cfba5 100644 --- a/ethstats/ethstats.go +++ b/ethstats/ethstats.go @@ -25,6 +25,7 @@ import ( "regexp" "runtime" "strconv" + "strings" "time" "github.com/ethereum/go-ethereum/common" @@ -115,7 +116,11 @@ func (s *Service) loop() { // Loop reporting until termination for { // Establish a websocket connection to the server and authenticate the node - conn, err := websocket.Dial(fmt.Sprintf("wss://%s/api", s.host), "", "http://localhost/") + url := fmt.Sprintf("%s/api", s.host) + if !strings.Contains(url, "://") { + url = "wss://" + url + } + conn, err := websocket.Dial(url, "", "http://localhost/") if err != nil { glog.V(logger.Warn).Infof("Stats server unreachable: %v", err) time.Sleep(10 * time.Second) @@ -297,6 +302,7 @@ func (s *Service) reportLatency(in *json.Decoder, out *json.Encoder) error { type blockStats struct { Number *big.Int `json:"number"` Hash common.Hash `json:"hash"` + Timestamp *big.Int `json:"timestamp"` Miner common.Address `json:"miner"` GasUsed *big.Int `json:"gasUsed"` GasLimit *big.Int `json:"gasLimit"` @@ -362,6 +368,7 @@ func (s *Service) reportBlock(out *json.Encoder, block *types.Block) error { "block": &blockStats{ Number: head.Number, Hash: head.Hash(), + Timestamp: head.Time, Miner: head.Coinbase, GasUsed: new(big.Int).Set(head.GasUsed), GasLimit: new(big.Int).Set(head.GasLimit),