diff --git a/front/src/App.vue b/front/src/App.vue
index 831917244522cbd21ca0e6b5469f5b1aff2ebe19..7f8f3e2cf4f6af2c0de94ad5690148ecc12df20f 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