You've already forked fm-dx-webserver
mirror of
https://github.com/KubaPro010/fm-dx-webserver.git
synced 2026-02-26 14:11:59 +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 => {
|
||||
const start = Date.now();
|
||||
|
||||
const req = http.get({ host, timeout: 2000 }, res => {
|
||||
res.resume(); // discard body
|
||||
resolve(Date.now() - start);
|
||||
const socket = net.connect({ host, port });
|
||||
|
||||
socket.setTimeout(timeout);
|
||||
|
||||
socket.on("connect", () => {
|
||||
const latency = Date.now() - start;
|
||||
socket.destroy();
|
||||
resolve(latency); // ms
|
||||
});
|
||||
|
||||
req.on("error", () => resolve(null)); // server offline
|
||||
req.on("timeout", () => {
|
||||
req.destroy();
|
||||
resolve(null);
|
||||
socket.on("timeout", () => {
|
||||
socket.destroy();
|
||||
resolve(null); // timed out
|
||||
});
|
||||
|
||||
socket.on("error", () => {
|
||||
resolve(null); // offline
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user