From 01a278eda29b460ff6b0dd4a1e0c0fcf58a1ac3b Mon Sep 17 00:00:00 2001 From: Janis Hutz Date: Sat, 25 Nov 2023 11:12:31 +0100 Subject: [PATCH] fix reconnection spamming --- backend/ui/fancy/showcase.js | 12 ++++++++++-- backend/ui/showcase.js | 12 ++++++++++-- frontend/src/app.js | 23 ++++++++++++++++++----- frontend/src/client/appleMusic/index.js | 12 ++++++++++-- frontend/src/client/showcase.js | 12 ++++++++++-- 5 files changed, 58 insertions(+), 13 deletions(-) diff --git a/backend/ui/fancy/showcase.js b/backend/ui/fancy/showcase.js index 86bcb97..aa96003 100644 --- a/backend/ui/fancy/showcase.js +++ b/backend/ui/fancy/showcase.js @@ -155,12 +155,20 @@ createApp( { setTimeout( () => { if ( !self.isReconnecting ) { self.isReconnecting = true; - self.connect(); - self.isReconnecting = false; + self.tryReconnect(); } }, 1000 ); }, false ); }, + tryReconnect() { + const int = setInterval( () => { + if ( !this.isReconnecting ) { + clearInterval( int ); + } else { + connectToSSESource(); + } + }, 1000 ); + }, handleBackground() { let colourDetails = []; let colours = []; diff --git a/backend/ui/showcase.js b/backend/ui/showcase.js index 1f9077a..5e78963 100644 --- a/backend/ui/showcase.js +++ b/backend/ui/showcase.js @@ -128,12 +128,20 @@ createApp( { setTimeout( () => { if ( !self.isReconnecting ) { self.isReconnecting = true; - self.connect(); - self.isReconnecting = false; + self.tryReconnect(); } }, 1000 ); }, false ); }, + tryReconnect() { + const int = setInterval( () => { + if ( !this.isReconnecting ) { + clearInterval( int ); + } else { + connectToSSESource(); + } + }, 1000 ); + }, }, mounted() { this.connect(); diff --git a/frontend/src/app.js b/frontend/src/app.js index 8f0ab72..a9b167d 100644 --- a/frontend/src/app.js +++ b/frontend/src/app.js @@ -78,6 +78,7 @@ const connectToSSESource = () => { }; source.onopen = () => { + isReconnecting = false; console.log( '[ BACKEND INTEGRATION ] Connection to notifier successful' ); }; @@ -86,13 +87,9 @@ const connectToSSESource = () => { setTimeout( () => { if ( !isReconnecting ) { - if ( errorCount > 5 ) { - isSSEAuth = false; - } isReconnecting = true; console.log( '[ BACKEND INTEGRATION ] Disconnected from notifier, reconnecting...' ); - connectToSSESource(); - isReconnecting = false; + tryReconnect(); } }, 1000 ); }, false ); @@ -109,6 +106,22 @@ const connectToSSESource = () => { } } +const tryReconnect = () => { + const int = setInterval( () => { + if ( !isReconnecting ) { + clearInterval( int ); + } else { + if ( errorCount > 5 ) { + isSSEAuth = false; + errorCount = 0; + } else { + errorCount += 1; + } + connectToSSESource(); + } + }, 1000 ); +} + let authKey = conf.authKey ?? ''; connect(); diff --git a/frontend/src/client/appleMusic/index.js b/frontend/src/client/appleMusic/index.js index 63ee5af..40d44cf 100644 --- a/frontend/src/client/appleMusic/index.js +++ b/frontend/src/client/appleMusic/index.js @@ -656,12 +656,20 @@ const app = Vue.createApp( { setTimeout( () => { if ( !self.isReconnecting ) { self.isReconnecting = true; - self.connect(); - self.isReconnecting = false; + self.tryReconnect(); } }, 1000 ); }, false ); }, + tryReconnect() { + const int = setInterval( () => { + if ( !this.isReconnecting ) { + clearInterval( int ); + } else { + connectToSSESource(); + } + }, 1000 ); + }, dismissNotification() { this.isShowingWarning = false; } diff --git a/frontend/src/client/showcase.js b/frontend/src/client/showcase.js index cb67192..36e6279 100644 --- a/frontend/src/client/showcase.js +++ b/frontend/src/client/showcase.js @@ -154,12 +154,20 @@ createApp( { setTimeout( () => { if ( !self.isReconnecting ) { self.isReconnecting = true; - self.connect(); - self.isReconnecting = false; + self.tryReconnect(); } }, 1000 ); }, false ); }, + tryReconnect() { + const int = setInterval( () => { + if ( !this.isReconnecting ) { + clearInterval( int ); + } else { + connectToSSESource(); + } + }, 1000 ); + }, handleBackground() { let colourDetails = []; let colours = [];