diff --git a/app.js b/app.js index c3bafe9..46af534 100644 --- a/app.js +++ b/app.js @@ -86,7 +86,10 @@ function pingAll() { // Push it to our graphs. var timeMs = util.getCurrentTimeMs(); - if (!lastGraphPush[network.ip] || timeMs - lastGraphPush[network.ip] >= 60 * 1000) { + // The same mechanic from trimUselessPings is seen here. + // If we dropped the ping, then to avoid destroying the graph, ignore it. + // However if it's been too long since the last successful ping, we'll send it anyways. + if (!lastGraphPush[network.ip] || (timeMs - lastGraphPush[network.ip] >= 60 * 1000 && res) || timeMs - lastGraphPush[network.ip] >= 70 * 1000) { lastGraphPush[network.ip] = timeMs; // Don't have too much data! diff --git a/config.json b/config.json index a17715b..5bc77d9 100644 --- a/config.json +++ b/config.json @@ -110,11 +110,6 @@ "ip": "play.gotpvp.com", "type": "PC" }, - { - "name": "MCLegends", - "ip": "play.mc-legends.com", - "type": "PC" - }, { "name": "Rewinside", "ip": "mc.rewinside.tv", diff --git a/lib/util.js b/lib/util.js index bab3dfc..2f7f5ae 100644 --- a/lib/util.js +++ b/lib/util.js @@ -16,9 +16,15 @@ function trimUselessPings(data) { // 0 is the index of the timestamp. // See the convertPingsToGraph method. if (entry[0] - lastTimestamp >= 60 * 1000) { - filteredListing.push(entry); + // This second check tries to smooth out randomly dropped pings. + // By default we only want entries that are online (playerCount > 0). + // This way we'll keep looking forward until we find one that is online. + // However if we can't find one within a reasonable timeframe, select the sucky one. + if (entry[0] - lastTimestamp >= 120 * 1000 || entry[1] > 0) { + filteredListing.push(entry); - lastTimestamp = entry[0]; + lastTimestamp = entry[0]; + } } }