AFFiNE/scripts/wait-3000-healthz.mjs
2023-04-14 15:03:16 -05:00

38 lines
745 B
JavaScript

import http from 'node:http';
const options = {
hostname: 'localhost',
port: 3000,
path: '/api/healthz',
method: 'GET',
};
const maxAttempts = 5;
const timeout = 1000;
let attempts = 0;
while (attempts < maxAttempts) {
await new Promise(resolve => setTimeout(resolve, timeout * (1 << attempts)));
await new Promise(resolve => {
const req = http.request(options, res => {
if (res.statusCode === 204) {
console.log('Server is ready');
process.exit(0);
} else {
console.log(`Unexpected response: ${res.statusCode}`);
}
resolve();
});
req.on('error', error => {
console.error(error);
resolve();
});
req.end();
attempts++;
});
}
process.exit(1);