@@ -112,7 +112,7 @@ const nanoid = customAlphabet("1234567890abcdef");
112112 */
113113export class SSEServerTransport implements Transport {
114114 // Store the ReadableStream controller for the SSE stream
115- private _sseController ?: ReadableStreamController < string > ;
115+ private _sseController ?: ReadableStreamController < Uint8Array > ;
116116 private _started : boolean = false ;
117117 private _sessionId : string ;
118118 // Counter for generating SSE event IDs (optional but good practice for SSE)
@@ -169,7 +169,8 @@ export class SSEServerTransport implements Transport {
169169 } ;
170170
171171 // Create the ReadableStream for the SSE body
172- const stream = new ReadableStream < string > ( {
172+ const encoder = new TextEncoder ( ) ;
173+ const stream = new ReadableStream < Uint8Array > ( {
173174 start : ( controller ) => {
174175 this . _sseController = controller ; // Store the controller to send messages later
175176 console . log ( `[${ this . _sessionId } ] SSE stream started.` ) ;
@@ -189,7 +190,7 @@ export class SSEServerTransport implements Transport {
189190 // Let's add a simple auto-incrementing ID to all events for consistency.
190191 const endpointEventData = `event: endpoint\ndata: ${ relativeUrlWithSession } \n\n` ;
191192 try {
192- controller . enqueue ( endpointEventData ) ;
193+ controller . enqueue ( encoder . encode ( endpointEventData ) ) ;
193194 console . log (
194195 `[${ this . _sessionId } ] Sent 'endpoint' event: ${ relativeUrlWithSession } `
195196 ) ;
@@ -407,6 +408,7 @@ export class SSEServerTransport implements Transport {
407408 throw error ;
408409 }
409410
411+ const encoder = new TextEncoder ( ) ;
410412 // Format the message as an SSE event
411413 const eventData = `event: message\nid: ${ this
412414 . _messageIdCounter ++ } \ndata: ${ JSON . stringify ( message ) } \n\n`;
@@ -425,7 +427,7 @@ export class SSEServerTransport implements Transport {
425427 this . _sseController = undefined ;
426428 throw error ;
427429 }
428- this . _sseController . enqueue ( eventData ) ;
430+ this . _sseController . enqueue ( encoder . encode ( eventData ) ) ;
429431 // console.log(`[${this._sessionId}] Sent message (SSE event ID: ${this._messageIdCounter - 1})`); // Debug log
430432 } catch ( error ) {
431433 // Catch synchronous errors during enqueue (e.g. controller already errored)
0 commit comments