@@ -305,20 +305,38 @@ async function handleWebSocketWithDispatcher(
305305
306306 // Handle close events
307307 serverWs . addEventListener ( 'close' , ( event ) => {
308- containerWs . close ( event . code , event . reason ) ;
308+ console . log ( `Client WebSocket closed: code=${ event . code } , reason=${ event . reason || 'none' } ` ) ;
309+ if ( containerWs . readyState === WebSocket . READY_STATE_OPEN || containerWs . readyState === WebSocket . READY_STATE_CONNECTING ) {
310+ containerWs . close ( event . code , event . reason ) ;
311+ }
309312 } ) ;
310313
311314 containerWs . addEventListener ( 'close' , ( event ) => {
312- serverWs . close ( event . code , event . reason ) ;
315+ console . log ( `Container WebSocket closed: code=${ event . code } , reason=${ event . reason || 'none' } , sessionId=${ sessionId } ` ) ;
316+ if ( serverWs . readyState === WebSocket . READY_STATE_OPEN || serverWs . readyState === WebSocket . READY_STATE_CONNECTING ) {
317+ serverWs . close ( event . code , event . reason || 'Container connection closed' ) ;
318+ }
313319 } ) ;
314320
315- // Handle errors
316- serverWs . addEventListener ( 'error' , ( ) => {
317- containerWs . close ( 1011 , 'Client WebSocket error' ) ;
321+ // Handle errors - these fire when connection fails abnormally
322+ serverWs . addEventListener ( 'error' , ( event ) => {
323+ console . error ( `Client WebSocket error, closing both connections, sessionId=${ sessionId } ` ) ;
324+ if ( containerWs . readyState === WebSocket . READY_STATE_OPEN || containerWs . readyState === WebSocket . READY_STATE_CONNECTING ) {
325+ containerWs . close ( 1011 , 'Client WebSocket error' ) ;
326+ }
327+ if ( serverWs . readyState === WebSocket . READY_STATE_OPEN ) {
328+ serverWs . close ( 1011 , 'Client WebSocket error' ) ;
329+ }
318330 } ) ;
319331
320- containerWs . addEventListener ( 'error' , ( ) => {
321- serverWs . close ( 1011 , 'Container WebSocket error' ) ;
332+ containerWs . addEventListener ( 'error' , ( event ) => {
333+ console . error ( `Container WebSocket error, closing client connection, sessionId=${ sessionId } ` ) ;
334+ if ( serverWs . readyState === WebSocket . READY_STATE_OPEN || serverWs . readyState === WebSocket . READY_STATE_CONNECTING ) {
335+ serverWs . close ( 1011 , 'Container connection error' ) ;
336+ }
337+ if ( containerWs . readyState === WebSocket . READY_STATE_OPEN ) {
338+ containerWs . close ( 1011 , 'Container WebSocket error' ) ;
339+ }
322340 } ) ;
323341
324342 // Return the client WebSocket
0 commit comments