@@ -451,6 +451,13 @@ export const connect = async (
451451 }
452452 }
453453
454+ const disconnectTrigger = ( event ) => {
455+ if ( socket . current ?. connected ) {
456+ console . log ( "Disconnect websocket on unload" ) ;
457+ socket . current . disconnect ( ) ;
458+ }
459+ }
460+
454461 const pagehideHandler = ( event ) => {
455462 if ( event . persisted && socket . current ?. connected ) {
456463 console . log ( "Disconnect backend before bfcache on navigation" ) ;
@@ -462,6 +469,8 @@ export const connect = async (
462469 socket . current . on ( "connect" , ( ) => {
463470 setConnectErrors ( [ ] ) ;
464471 window . addEventListener ( "pagehide" , pagehideHandler ) ;
472+ window . addEventListener ( "beforeunload" , disconnectTrigger ) ;
473+ window . addEventListener ( "unload" , disconnectTrigger ) ;
465474 } ) ;
466475
467476 socket . current . on ( "connect_error" , ( error ) => {
@@ -471,6 +480,8 @@ export const connect = async (
471480 // When the socket disconnects reset the event_processing flag
472481 socket . current . on ( "disconnect" , ( ) => {
473482 event_processing = false ;
483+ window . removeEventListener ( "unload" , disconnectTrigger ) ;
484+ window . removeEventListener ( "beforeunload" , disconnectTrigger ) ;
474485 window . removeEventListener ( "pagehide" , pagehideHandler ) ;
475486 } ) ;
476487
0 commit comments