@@ -441,6 +441,13 @@ export const connect = async (
441441 }
442442 }
443443
444+ const disconnectTrigger = ( event ) => {
445+ if ( socket . current ?. connected ) {
446+ console . log ( "Disconnect websocket on unload" ) ;
447+ socket . current . disconnect ( ) ;
448+ }
449+ }
450+
444451 const pagehideHandler = ( event ) => {
445452 if ( event . persisted && socket . current ?. connected ) {
446453 console . log ( "Disconnect backend before bfcache on navigation" ) ;
@@ -452,6 +459,8 @@ export const connect = async (
452459 socket . current . on ( "connect" , ( ) => {
453460 setConnectErrors ( [ ] ) ;
454461 window . addEventListener ( "pagehide" , pagehideHandler ) ;
462+ window . addEventListener ( "beforeunload" , disconnectTrigger ) ;
463+ window . addEventListener ( "unload" , disconnectTrigger ) ;
455464 } ) ;
456465
457466 socket . current . on ( "connect_error" , ( error ) => {
@@ -461,6 +470,8 @@ export const connect = async (
461470 // When the socket disconnects reset the event_processing flag
462471 socket . current . on ( "disconnect" , ( ) => {
463472 event_processing = false ;
473+ window . removeEventListener ( "unload" , disconnectTrigger ) ;
474+ window . removeEventListener ( "beforeunload" , disconnectTrigger ) ;
464475 window . removeEventListener ( "pagehide" , pagehideHandler ) ;
465476 } ) ;
466477
0 commit comments