This repository was archived by the owner on Oct 22, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +18
-14
lines changed Expand file tree Collapse file tree 3 files changed +18
-14
lines changed Original file line number Diff line number Diff line change @@ -360,16 +360,13 @@ export async function handleSseConnect(
360360 authData ,
361361 ) ;
362362
363- // HACK: This is required so the abort handler below works
364- //
365- // See https://github.com/honojs/hono/issues/1770#issuecomment-2461966225
366- stream . onAbort ( ( ) => { } ) ;
367-
368363 // Wait for close
369364 const abortResolver = Promise . withResolvers ( ) ;
370- c . req . raw . signal . addEventListener ( "abort" , async ( ) => {
365+
366+ // Handle stream abort (when client closes the connection)
367+ stream . onAbort ( async ( ) => {
371368 try {
372- logger ( ) . debug ( "sse shutting down " ) ;
369+ logger ( ) . debug ( "sse stream aborted " ) ;
373370
374371 // Cleanup
375372 if ( connId ) {
@@ -384,6 +381,7 @@ export async function handleSseConnect(
384381 abortResolver . resolve ( undefined ) ;
385382 } catch ( error ) {
386383 logger ( ) . error ( "error closing sse connection" , { error } ) ;
384+ abortResolver . resolve ( undefined ) ;
387385 }
388386 } ) ;
389387
Original file line number Diff line number Diff line change @@ -88,7 +88,7 @@ export function runDriverTests(
8888
8989 // TODO: Add back SSE once fixed in Rivet driver & CF lifecycle
9090 // for (const transport of ["websocket", "sse"] as Transport[]) {
91- for ( const transport of [ "websocket" ] as Transport [ ] ) {
91+ for ( const transport of [ "websocket" , "sse" ] as Transport [ ] ) {
9292 describe ( `transport (${ transport } )` , ( ) => {
9393 runActorConnTests ( {
9494 ...driverTestConfig ,
Original file line number Diff line number Diff line change @@ -84,8 +84,16 @@ export function runActorConnTests(driverTestConfig: DriverTestConfig) {
8484
8585 // Set up event listener
8686 const receivedEvents : number [ ] = [ ] ;
87- connection . on ( "newCount" , ( count : number ) => {
88- receivedEvents . push ( count ) ;
87+ const receivedEventsPromise = new Promise ( ( resolve ) => {
88+ connection . on ( "newCount" , ( count : number ) => {
89+ receivedEvents . push ( count ) ;
90+ if (
91+ receivedEvents . includes ( 1 ) &&
92+ receivedEvents . includes ( 6 ) &&
93+ receivedEvents . includes ( 9 )
94+ )
95+ resolve ( undefined ) ;
96+ } ) ;
8997 } ) ;
9098
9199 // Send one RPC call over the connection to ensure it's open
@@ -96,10 +104,8 @@ export function runActorConnTests(driverTestConfig: DriverTestConfig) {
96104 await handle . increment ( 5 ) ;
97105 await handle . increment ( 3 ) ;
98106
99- // Verify events were received from both connection and handle calls
100- expect ( receivedEvents ) . toContain ( 1 ) ; // From connection call
101- expect ( receivedEvents ) . toContain ( 6 ) ; // From first handle call (1+5)
102- expect ( receivedEvents ) . toContain ( 9 ) ; // From second handle call (6+3)
107+ // Wait for all events to be received
108+ await receivedEventsPromise ;
103109
104110 // Clean up
105111 await connection . dispose ( ) ;
You can’t perform that action at this time.
0 commit comments