Fix initial traffic value

This commit is contained in:
世界 2024-12-03 21:43:11 +08:00
parent 558585b01d
commit 1e787cb607
No known key found for this signature in database
GPG Key ID: CD109927C34A63C4
2 changed files with 17 additions and 21 deletions

View File

@ -316,18 +316,15 @@ func traffic(trafficManager *trafficontrol.Manager) func(w http.ResponseWriter,
tick := time.NewTicker(time.Second) tick := time.NewTicker(time.Second)
defer tick.Stop() defer tick.Stop()
buf := &bytes.Buffer{} buf := &bytes.Buffer{}
var ( uploadTotal, downloadTotal := trafficManager.Total()
uploadTotal int64
doanloadTotal int64
err error
)
for range tick.C { for range tick.C {
buf.Reset() buf.Reset()
uploadTotalNew, downloadTotalNew := trafficManager.Total() uploadTotalNew, downloadTotalNew := trafficManager.Total()
if err := json.NewEncoder(buf).Encode(Traffic{ err := json.NewEncoder(buf).Encode(Traffic{
Up: uploadTotalNew - uploadTotal, Up: uploadTotalNew - uploadTotal,
Down: downloadTotalNew - doanloadTotal, Down: downloadTotalNew - downloadTotal,
}); err != nil { })
if err != nil {
break break
} }
if conn == nil { if conn == nil {
@ -339,8 +336,9 @@ func traffic(trafficManager *trafficontrol.Manager) func(w http.ResponseWriter,
if err != nil { if err != nil {
break break
} }
uploadTotal = uploadTotalNew uploadTotal = uploadTotalNew
doanloadTotal = downloadTotalNew downloadTotal = downloadTotalNew
} }
} }
} }

View File

@ -51,19 +51,10 @@ func (s *CommandServer) handleStatusConn(conn net.Conn) error {
ticker := time.NewTicker(time.Duration(interval)) ticker := time.NewTicker(time.Duration(interval))
defer ticker.Stop() defer ticker.Stop()
ctx := connKeepAlive(conn) ctx := connKeepAlive(conn)
var ( status := s.readStatus()
status StatusMessage uploadTotal := status.UplinkTotal
uploadTotal int64 downloadTotal := status.DownlinkTotal
downloadTotal int64
)
for { for {
status = s.readStatus()
upload := status.UplinkTotal - uploadTotal
download := status.DownlinkTotal - downloadTotal
uploadTotal = status.UplinkTotal
downloadTotal = status.DownlinkTotal
status.Uplink = upload
status.Downlink = download
err = binary.Write(conn, binary.BigEndian, status) err = binary.Write(conn, binary.BigEndian, status)
if err != nil { if err != nil {
return err return err
@ -73,6 +64,13 @@ func (s *CommandServer) handleStatusConn(conn net.Conn) error {
return ctx.Err() return ctx.Err()
case <-ticker.C: case <-ticker.C:
} }
status = s.readStatus()
upload := status.UplinkTotal - uploadTotal
download := status.DownlinkTotal - downloadTotal
uploadTotal = status.UplinkTotal
downloadTotal = status.DownlinkTotal
status.Uplink = upload
status.Downlink = download
} }
} }