From a38889c285bef95359e36c93da37221126f96556 Mon Sep 17 00:00:00 2001 From: Giacomo Cavalieri Date: Thu, 4 Jan 2024 19:13:14 +0100 Subject: =?UTF-8?q?=F0=9F=94=80=20Add=20logging=20to=20`lustre/try`=20(#30?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * :heavy_plus_sign: Add `gleam_community_ansi` dependency * :sparkles: Add log message when server is started * :sparkles: Add retry policy and logging if port is taken --- src/http.ffi.mjs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/http.ffi.mjs') diff --git a/src/http.ffi.mjs b/src/http.ffi.mjs index 06d5b31..3f59933 100644 --- a/src/http.ffi.mjs +++ b/src/http.ffi.mjs @@ -85,6 +85,17 @@ const server = Http.createServer((req, res) => { } }); -export const serve = (port) => { - server.listen(port, "localhost"); +export const serve = (host, port, on_start, on_port_taken) => { + let tries = 1; + server.on("error", (error) => { + if (error.code === "EADDRINUSE") { + let is_first_try = tries === 1; + if (is_first_try) { + on_port_taken(port); + } + tries++; + port++; + server.listen(port, host); + } + }).listen(port, host, () => { on_start(port) }); }; -- cgit v1.2.3