mirror of
https://github.com/tale/headplane.git
synced 2026-08-07 04:43:12 +00:00
fix: correctly re-enqueue event stream controller when closed
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user