ethstats: fix timestamps and add custom proto support

This commit is contained in:
Péter Szilágyi 2016-12-11 20:16:30 +02:00
parent 4f9ccdd70f
commit 13614f4e1c
No known key found for this signature in database
GPG Key ID: 119A76381CCB7DD2

View File

@ -25,6 +25,7 @@ import (
"regexp" "regexp"
"runtime" "runtime"
"strconv" "strconv"
"strings"
"time" "time"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
@ -115,7 +116,11 @@ func (s *Service) loop() {
// Loop reporting until termination // Loop reporting until termination
for { for {
// Establish a websocket connection to the server and authenticate the node // 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 { if err != nil {
glog.V(logger.Warn).Infof("Stats server unreachable: %v", err) glog.V(logger.Warn).Infof("Stats server unreachable: %v", err)
time.Sleep(10 * time.Second) time.Sleep(10 * time.Second)
@ -297,6 +302,7 @@ func (s *Service) reportLatency(in *json.Decoder, out *json.Encoder) error {
type blockStats struct { type blockStats struct {
Number *big.Int `json:"number"` Number *big.Int `json:"number"`
Hash common.Hash `json:"hash"` Hash common.Hash `json:"hash"`
Timestamp *big.Int `json:"timestamp"`
Miner common.Address `json:"miner"` Miner common.Address `json:"miner"`
GasUsed *big.Int `json:"gasUsed"` GasUsed *big.Int `json:"gasUsed"`
GasLimit *big.Int `json:"gasLimit"` GasLimit *big.Int `json:"gasLimit"`
@ -362,6 +368,7 @@ func (s *Service) reportBlock(out *json.Encoder, block *types.Block) error {
"block": &blockStats{ "block": &blockStats{
Number: head.Number, Number: head.Number,
Hash: head.Hash(), Hash: head.Hash(),
Timestamp: head.Time,
Miner: head.Coinbase, Miner: head.Coinbase,
GasUsed: new(big.Int).Set(head.GasUsed), GasUsed: new(big.Int).Set(head.GasUsed),
GasLimit: new(big.Int).Set(head.GasLimit), GasLimit: new(big.Int).Set(head.GasLimit),