diff --git a/plugins/dashboard/tps.go b/plugins/dashboard/tps.go index 8572fa68651e918cd5b3720ffc4d9c8e5df7f7fa..22b59d76389c4fc6a9f0ef880d9d655c0f42a6ee 100644 --- a/plugins/dashboard/tps.go +++ b/plugins/dashboard/tps.go @@ -2,7 +2,6 @@ package dashboard import ( "encoding/binary" - "fmt" "html/template" "net/http" @@ -27,11 +26,13 @@ func ServeWs(w http.ResponseWriter, r *http.Request) { } notifyWebsocketClient := events.NewClosure(func(sampledTPS uint64) { - p := make([]byte, 4) - binary.LittleEndian.PutUint32(p, uint32(sampledTPS)) - if err := ws.WriteMessage(websocket.BinaryMessage, p); err != nil { - return - } + go func() { + p := make([]byte, 4) + binary.LittleEndian.PutUint32(p, uint32(sampledTPS)) + if err := ws.WriteMessage(websocket.BinaryMessage, p); err != nil { + return + } + }() }) metrics.Events.ReceivedTPSUpdated.Attach(notifyWebsocketClient) @@ -42,8 +43,6 @@ func ServeWs(w http.ResponseWriter, r *http.Request) { } } - fmt.Println("DISCONNECTOR") - metrics.Events.ReceivedTPSUpdated.Detach(notifyWebsocketClient) } diff --git a/plugins/dashboard/tps_template.go b/plugins/dashboard/tps_template.go index 69d27e6e9477f0631dd0ac6d6b7bc98d161e3140..f12df4b5efac8eb41fe2e61ee9082f38fe3448f2 100644 --- a/plugins/dashboard/tps_template.go +++ b/plugins/dashboard/tps_template.go @@ -286,17 +286,20 @@ var tpsTemplate = ` } }] }); + + const dataStr = '{{.Data}}' + const parsedData = JSON.parse(dataStr.replace(/ /g, ',')); + time = Date.now() - 1000 * (parsedData.length + 1); + for (let i = 0; i < parsedData.length; i++) { + chart.series[0].addPoint([time += 1000, parseInt(parsedData[i], 10)], false); + } + chart.redraw(); + console.log(parsedData); + const conn = new WebSocket("ws://{{.Host}}/ws"); conn.binaryType = 'arraybuffer'; conn.onopen = evt => { console.log("WebSocket is open now."); - const dataStr = '{{.Data}}' - const data = JSON.parse(dataStr.replace(/ /g, ',')); - time = Date.now() - 1000 * (data.length + 1); - for (let i = 0; i < data.length; i++) { - chart.series[0].addPoint([time += 1000, parseInt(data[i], 10)], true); - } - console.log(data); console.log("WebSocket done."); } conn.onclose = () => {