diff --git a/changes/changelog.d/287.bugfix b/changes/changelog.d/287.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..ce14736ad1db4065e086a9c3e5404545b19c5a69
--- /dev/null
+++ b/changes/changelog.d/287.bugfix
@@ -0,0 +1 @@
+Fixed duplicated websocket connexion on timeline (#287)
diff --git a/front/src/views/instance/Timeline.vue b/front/src/views/instance/Timeline.vue
index 2ab8b708cd1ae140d31c7ca3c5e1cc3f56631f51..03bd5a53758373257239d054f6ffbead3569d9fe 100644
--- a/front/src/views/instance/Timeline.vue
+++ b/front/src/views/instance/Timeline.vue
@@ -34,6 +34,7 @@ export default {
data () {
return {
isLoading: false,
+ bridge: null,
components: {
'Like': Like,
'Listen': Listen
@@ -44,6 +45,9 @@ export default {
this.openWebsocket()
this.fetchEvents()
},
+ destroyed () {
+ this.disconnect()
+ },
computed: {
...mapState({
events: state => state.instance.events
@@ -58,14 +62,22 @@ export default {
self.$store.commit('instance/events', response.data.results)
})
},
+ disconnect () {
+ if (!this.bridge) {
+ return
+ }
+ this.bridge.socket.close(1000, 'goodbye', {keepClosed: true})
+ },
openWebsocket () {
if (!this.$store.state.auth.authenticated) {
return
}
+ this.disconnect()
let self = this
let token = this.$store.state.auth.token
// let token = 'test'
const bridge = new WebSocketBridge()
+ this.bridge = bridge
bridge.connect(
`/api/v1/instance/activity?token=${token}`,
null,