diff options
author | ManeraKai <manerakai@protonmail.com> | 2023-02-08 01:41:32 +0300 |
---|---|---|
committer | ManeraKai <manerakai@protonmail.com> | 2023-02-08 01:41:38 +0300 |
commit | 4983a7ad9f53f10a1b938b83b36bb0594ba4f295 (patch) | |
tree | b855d320c37acf9a587f159be7d51ec8b8eedd4c /src/assets | |
parent | 2.5.3 => 2.5.2 (diff) | |
download | libredirect-4983a7ad9f53f10a1b938b83b36bb0594ba4f295.zip |
Re-added Test Latency in a better implementation https://github.com/libredirect/libredirect/issues/605
Diffstat (limited to 'src/assets')
-rw-r--r-- | src/assets/javascripts/utils.js | 44 |
1 files changed, 43 insertions, 1 deletions
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, } |