Skip to content

Commit 52e22ad

Browse files
Refactor ondelete hook to onsessionclosed in StreamableHTTPServerTransport
- Renamed ondelete callback to onsessionclosed for better clarity - Moved callback from public property to private field following options pattern - Added comprehensive JSDoc documentation explaining the callback's purpose - Updated DELETE request handler to use the new callback structure 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent afb8971 commit 52e22ad

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/server/streamableHttp.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,18 @@ export interface StreamableHTTPServerTransportOptions {
4949
*/
5050
onsessioninitialized?: (sessionId: string) => void;
5151

52+
/**
53+
* A callback for session close events
54+
* This is called when the server closes a session due to a DELETE request.
55+
* Useful in cases when you need to clean up resources associated with the session.
56+
* Note that this is different from the transport closing, if you are handling
57+
* HTTP requests from multiple nodes you might want to close each
58+
* StreamableHTTPServerTransport after a request is completed while still keeping the
59+
* session open/running.
60+
* @param sessionId The session ID that was closed
61+
*/
62+
onsessionclosed?: (sessionId: string) => void;
63+
5264
/**
5365
* If true, the server will return JSON responses instead of starting an SSE stream.
5466
* This can be useful for simple request/response scenarios without streaming.
@@ -127,13 +139,13 @@ export class StreamableHTTPServerTransport implements Transport {
127139
private _standaloneSseStreamId: string = '_GET_stream';
128140
private _eventStore?: EventStore;
129141
private _onsessioninitialized?: (sessionId: string) => void;
142+
private _onsessionclosed?: (sessionId: string) => void;
130143
private _allowedHosts?: string[];
131144
private _allowedOrigins?: string[];
132145
private _enableDnsRebindingProtection: boolean;
133146

134147
sessionId?: string;
135148
onclose?: () => void;
136-
ondelete?: (sessionId: string) => void;
137149
onerror?: (error: Error) => void;
138150
onmessage?: (message: JSONRPCMessage, extra?: MessageExtraInfo) => void;
139151

@@ -142,6 +154,7 @@ export class StreamableHTTPServerTransport implements Transport {
142154
this._enableJsonResponse = options.enableJsonResponse ?? false;
143155
this._eventStore = options.eventStore;
144156
this._onsessioninitialized = options.onsessioninitialized;
157+
this._onsessionclosed = options.onsessionclosed;
145158
this._allowedHosts = options.allowedHosts;
146159
this._allowedOrigins = options.allowedOrigins;
147160
this._enableDnsRebindingProtection = options.enableDnsRebindingProtection ?? false;
@@ -539,7 +552,7 @@ export class StreamableHTTPServerTransport implements Transport {
539552
if (!this.validateProtocolVersion(req, res)) {
540553
return;
541554
}
542-
this.ondelete?.(this.sessionId!);
555+
this._onsessionclosed?.(this.sessionId!);
543556
await this.close();
544557
res.writeHead(200).end();
545558
}

0 commit comments

Comments
 (0)