From 13614f4e1ce842cb4dffd5e9b27db433b980e65d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= <peterke@gmail.com>
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 a5fa84468e..19f9cfba50 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),
-- 
GitLab