feat: implement real ping RTT calculation instead of hardcoded 50ms

This commit is contained in:
Jose Luis Montañes Ojados
2026-01-16 19:43:31 +01:00
parent 184fff202f
commit 13f444193d
3 changed files with 79 additions and 5 deletions

View File

@@ -459,11 +459,20 @@ func (c *Client) processCommand(data []byte, pkt *protocol.Packet) error {
case "notifyconnectioninforequest":
// Server asking for connection info. We MUST reply to update Ping in UI and avoid timeout.
log.Println("Server requested connection info. sending 'setconnectioninfo'...")
log.Println("Server requested connection info. Sending 'setconnectioninfo'...")
cmd := protocol.NewCommand("setconnectioninfo")
cmd.AddParam("connection_ping", "50")
cmd.AddParam("connection_ping_deviation", "5")
// Use real ping values if available, otherwise default to 50ms
pingMs := c.PingRTT
pingDev := c.PingDeviation
if pingMs == 0 {
pingMs = 50.0 // Default before first measurement
pingDev = 5.0
}
cmd.AddParam("connection_ping", fmt.Sprintf("%.4f", pingMs))
cmd.AddParam("connection_ping_deviation", fmt.Sprintf("%.4f", pingDev))
// Detailed stats for each kind as seen in ts3j (KEEPALIVE, SPEECH, CONTROL)
kinds := []string{"keepalive", "speech", "control"}