Path: blob/master/webhooks/webhook_preview/app/api/sse/stream/route.ts
641 views
import { NextRequest } from "next/server";1import { addClient, removeClient } from "@/lib/sse-store";2import { randomUUID } from "crypto";34export async function GET(req: NextRequest) {5const uuid = req.nextUrl.searchParams.get("uuid");6if (!uuid) return new Response("UUID não informado", { status: 400 });78const encoder = new TextEncoder();9const stream = new TransformStream();10const writer = stream.writable.getWriter();11const id = randomUUID();1213addClient(uuid, {14id,15res: {16write: (data: string) => writer.write(encoder.encode(data)),17},18});1920writer.write(encoder.encode("event: connected\ndata: ok\n\n"));2122req.signal.addEventListener("abort", () => {23removeClient(uuid, id);24});2526return new Response(stream.readable, {27headers: {28"Content-Type": "text/event-stream",29"Cache-Control": "no-cache",30Connection: "keep-alive",31},32});33}343536