From 4983a7ad9f53f10a1b938b83b36bb0594ba4f295 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Wed, 8 Feb 2023 01:41:32 +0300 Subject: Re-added Test Latency in a better implementation https://github.com/libredirect/libredirect/issues/605 --- src/assets/javascripts/utils.js | 44 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'src/assets') diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js index c8a771d9..2b9a9193 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -58,7 +58,48 @@ function getList() { } http.send(null) }) +} + +function pingOnce(href) { + return new Promise(async resolve => { + let started + let http = new XMLHttpRequest() + http.timeout = 5000 + http.ontimeout = () => resolve(5000) + http.onerror = () => resolve() + http.onreadystatechange = () => { + if (http.readyState == 2) { + if (http.status == 200) { + let ended = new Date().getTime() + http.abort() + resolve(ended - started) + } else { + resolve(5000 + http.status) + } + } + } + http.open("GET", `${href}?_=${new Date().getTime()}`, true) + started = new Date().getTime() + http.send(null) + }) +} +function ping(href) { + return new Promise(async resolve => { + let average = 0 + let time + for (let i = 0; i < 3; i++) { + time = await pingOnce(href) + if (i == 0) continue + if (time >= 5000) { + resolve(time) + return + } + average += time + } + average = parseInt(average / 3) + resolve(average) + }) } export default { @@ -68,5 +109,6 @@ export default { getBlacklist, camelCase, getConfig, - getOptions + getOptions, + ping, } -- cgit 1.4.1