Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
parkpow
GitHub Repository: parkpow/deep-license-plate-recognition
Path: blob/master/webhooks/webhook_preview/app/api/sse/stream/route.ts
641 views
1
import { NextRequest } from "next/server";
2
import { addClient, removeClient } from "@/lib/sse-store";
3
import { randomUUID } from "crypto";
4
5
export async function GET(req: NextRequest) {
6
const uuid = req.nextUrl.searchParams.get("uuid");
7
if (!uuid) return new Response("UUID não informado", { status: 400 });
8
9
const encoder = new TextEncoder();
10
const stream = new TransformStream();
11
const writer = stream.writable.getWriter();
12
const id = randomUUID();
13
14
addClient(uuid, {
15
id,
16
res: {
17
write: (data: string) => writer.write(encoder.encode(data)),
18
},
19
});
20
21
writer.write(encoder.encode("event: connected\ndata: ok\n\n"));
22
23
req.signal.addEventListener("abort", () => {
24
removeClient(uuid, id);
25
});
26
27
return new Response(stream.readable, {
28
headers: {
29
"Content-Type": "text/event-stream",
30
"Cache-Control": "no-cache",
31
Connection: "keep-alive",
32
},
33
});
34
}
35
36