From 131c54f501e5a5048f7fc5262b756313da685278 Mon Sep 17 00:00:00 2001 From: Aarnav Tale Date: Thu, 26 Mar 2026 12:58:35 -0400 Subject: [PATCH] fix: correctly re-enqueue event stream controller when closed --- app/routes/util/live.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/routes/util/live.ts b/app/routes/util/live.ts index bb1d438..8107008 100644 --- a/app/routes/util/live.ts +++ b/app/routes/util/live.ts @@ -16,9 +16,12 @@ export async function loader({ request, context }: Route.LoaderArgs) { const stream = new ReadableStream({ start(controller) { + let closed = false; const encoder = new TextEncoder(); const send = (event: string, data: unknown) => { - controller.enqueue(encoder.encode(`event: ${event}\ndata: ${JSON.stringify(data)}\n\n`)); + if (!closed) { + controller.enqueue(encoder.encode(`event: ${event}\ndata: ${JSON.stringify(data)}\n\n`)); + } }; const versions = context.hsLive.getVersions(); @@ -40,6 +43,7 @@ export async function loader({ request, context }: Route.LoaderArgs) { request.signal.addEventListener("abort", () => { log.debug("sse", "Client disconnected"); + closed = true; unsubscribe(); clearInterval(heartbeat); try {