about summary refs log tree commit diff stats
path: root/src/assets
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2023-02-08 01:41:32 +0300
committerManeraKai <manerakai@protonmail.com>2023-02-08 01:41:38 +0300
commit4983a7ad9f53f10a1b938b83b36bb0594ba4f295 (patch)
treeb855d320c37acf9a587f159be7d51ec8b8eedd4c /src/assets
parent2.5.3 => 2.5.2 (diff)
downloadlibredirect-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.js44
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,
 }