You've already forked fm-dx-webserver
mirror of
https://github.com/KubaPro010/fm-dx-webserver.git
synced 2026-02-26 22:13:53 +01:00
Merge pull request #181 from AmateurAudioDude/v1.3.11-tcp-latency-check
TCP for server region latency check
This commit is contained in:
@@ -240,19 +240,27 @@ function checkIPv6Support(callback) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkLatency(host) {
|
function checkLatency(host, port = 80, timeout = 2000) {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
const start = Date.now();
|
const start = Date.now();
|
||||||
|
|
||||||
const req = http.get({ host, timeout: 2000 }, res => {
|
const socket = net.connect({ host, port });
|
||||||
res.resume(); // discard body
|
|
||||||
resolve(Date.now() - start);
|
socket.setTimeout(timeout);
|
||||||
|
|
||||||
|
socket.on("connect", () => {
|
||||||
|
const latency = Date.now() - start;
|
||||||
|
socket.destroy();
|
||||||
|
resolve(latency); // ms
|
||||||
});
|
});
|
||||||
|
|
||||||
req.on("error", () => resolve(null)); // server offline
|
socket.on("timeout", () => {
|
||||||
req.on("timeout", () => {
|
socket.destroy();
|
||||||
req.destroy();
|
resolve(null); // timed out
|
||||||
resolve(null);
|
});
|
||||||
|
|
||||||
|
socket.on("error", () => {
|
||||||
|
resolve(null); // offline
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user