From 96573dbcafb138c91b524ef9995de44203d95246 Mon Sep 17 00:00:00 2001 From: Michael Warner <61156732+mwarnerdotme@users.noreply.github.com> Date: Wed, 2 Mar 2022 23:22:32 -0700 Subject: [PATCH] fix(hmr): client pinging behind a proxy on websocket disconnect (fix #4501) (#5466) --- packages/vite/src/client/client.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/vite/src/client/client.ts b/packages/vite/src/client/client.ts index 988fd45291983f..076e11e1e31aba 100644 --- a/packages/vite/src/client/client.ts +++ b/packages/vite/src/client/client.ts @@ -214,9 +214,14 @@ async function waitForSuccessfulPing(ms = 1000) { // eslint-disable-next-line no-constant-condition while (true) { try { - await fetch(`${base}__vite_ping`) - break + const pingResponse = await fetch(`${base}__vite_ping`) + + // success - 2xx status code + if (pingResponse.ok) break + // failure - non-2xx status code + else throw new Error() } catch (e) { + // wait ms before attempting to ping again await new Promise((resolve) => setTimeout(resolve, ms)) } }