From ce1fae453b9dfc16c3ddbf505638869803419e48 Mon Sep 17 00:00:00 2001
From: Ciaran Ainsworth <ciaranainsworth@outlook.com>
Date: Sun, 9 May 2021 19:52:51 +0100
Subject: [PATCH] Add timeout to websocket

---
 front/src/App.vue | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/front/src/App.vue b/front/src/App.vue
index 8319172445..7f8f3e2cf4 100644
--- a/front/src/App.vue
+++ b/front/src/App.vue
@@ -238,20 +238,21 @@ export default {
         return
       }
       this.bridge.close()
+      console.log("Disconnected from websocket")
     },
     openWebsocket () {
       if (!this.$store.state.auth.authenticated) {
         return
       }
-      this.disconnect()
       let self = this
-      let token = this.$store.state.auth.token
+      self.disconnect()
+      let token = self.$store.state.auth.token
       // let token = 'test'
-      let url = this.$store.getters['instance/absoluteUrl'](`api/v1/activity?token=${token}`)
+      let url = self.$store.getters['instance/absoluteUrl'](`api/v1/activity?token=${token}`)
       url = url.replace('http://', 'ws://')
       url = url.replace('https://', 'wss://')
       const bridge = new WebSocket(url)
-      this.bridge = bridge
+      self.bridge = bridge
       bridge.onmessage = function (event) {
         console.log(event)
         self.$store.dispatch('ui/websocketEvent', event)
@@ -260,6 +261,12 @@ export default {
         console.log(event)
         console.log('Connected to WebSocket')
       }
+      bridge.onclose = function(event) {
+        console.log("Websocket has closed. Attempting reconnect in 60 seconds.", event.reason)
+        setTimeout(function() {
+          self.openWebsocket();
+        }, 1000 * 60);
+      }
     },
     getTrackInformationText(track) {
       const trackTitle = track.title
-- 
GitLab