From 2b0599e16351c273f8c379ef445d9632f528c64c Mon Sep 17 00:00:00 2001 From: Justin Spahr-Summers Date: Fri, 11 Oct 2024 16:46:30 +0100 Subject: [PATCH] Update server SSE transport --- src/server/sse.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/server/sse.ts b/src/server/sse.ts index 86d5fe59..9afbea79 100644 --- a/src/server/sse.ts +++ b/src/server/sse.ts @@ -23,7 +23,10 @@ export class SSEServerTransport implements Transport { /** * Creates a new SSE server transport, which will direct the client to POST messages to the relative or absolute URL identified by `_endpoint`. */ - constructor(private _endpoint: string) { + constructor( + private _endpoint: string, + private res: ServerResponse, + ) { this._sessionId = randomUUID(); } @@ -32,24 +35,24 @@ export class SSEServerTransport implements Transport { * * This should be called when a GET request is made to establish the SSE stream. */ - async connectSSE(req: IncomingMessage, res: ServerResponse): Promise { + async start(): Promise { if (this._sseResponse) { throw new Error("Already connected!"); } - res.writeHead(200, { + this.res.writeHead(200, { "Content-Type": "text/event-stream", "Cache-Control": "no-cache", Connection: "keep-alive", }); // Send the endpoint event - res.write( + this.res.write( `event: endpoint\ndata: ${encodeURI(this._endpoint)}?sessionId=${this._sessionId}\n\n`, ); - this._sseResponse = res; - res.on("close", () => { + this._sseResponse = this.res; + this.res.on("close", () => { this._sseResponse = undefined; this.onclose?.(); });