mirror of
https://github.com/librespeed/speedtest.git
synced 2026-08-04 14:48:38 +00:00
http fetch timeout fix
This commit is contained in:
parent
21d3fb0260
commit
ab86aab10f
1 changed files with 25 additions and 4 deletions
|
|
@ -4,16 +4,37 @@ const https = require('node:https');
|
|||
|
||||
const COMPOSE_FILE = 'tests/docker-compose-playwright.yml';
|
||||
|
||||
function isHttpOk(url) {
|
||||
return new Promise((resolve, reject) => {
|
||||
function isHttpOk(url, requestTimeoutMs = 10_000) {
|
||||
return new Promise((resolve) => {
|
||||
const client = url.startsWith('https://') ? https : http;
|
||||
let settled = false;
|
||||
const settle = (value) => {
|
||||
if (settled) {
|
||||
return;
|
||||
}
|
||||
settled = true;
|
||||
resolve(value);
|
||||
};
|
||||
|
||||
const req = client.get(url, (res) => {
|
||||
const status = res.statusCode || 0;
|
||||
// Drain body so sockets can be reused/closed cleanly.
|
||||
res.resume();
|
||||
resolve(status >= 200 && status < 300);
|
||||
settle(status >= 200 && status < 300);
|
||||
});
|
||||
|
||||
req.setTimeout(requestTimeoutMs, () => {
|
||||
req.destroy(new Error(`Request timed out after ${requestTimeoutMs}ms`));
|
||||
});
|
||||
|
||||
req.on('timeout', () => {
|
||||
req.destroy(new Error(`Request timed out after ${requestTimeoutMs}ms`));
|
||||
});
|
||||
|
||||
req.on('error', () => {
|
||||
// Connection issues/timeouts are expected while services are starting.
|
||||
settle(false);
|
||||
});
|
||||
req.on('error', reject);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue