#49 reconnect EventSource after 5 minutes
This commit is contained in:
@@ -19,8 +19,12 @@ export default class App {
|
|||||||
this.sorterFn = ''
|
this.sorterFn = ''
|
||||||
this.theme = Theme.get(localStorage.getItem('theme'))
|
this.theme = Theme.get(localStorage.getItem('theme'))
|
||||||
this.eventSource = null
|
this.eventSource = null
|
||||||
|
this.connectTime = null
|
||||||
this.keepAliveTimer = null
|
this.keepAliveTimer = null
|
||||||
|
// make sure we got activity at least every 20 seconds
|
||||||
this.keepAliveSeconds = 20
|
this.keepAliveSeconds = 20
|
||||||
|
// always reconnect after 5 minutes
|
||||||
|
this.maxConnectionLifetimeSeconds = 300
|
||||||
this.clusters = new Map()
|
this.clusters = new Map()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,12 +382,20 @@ export default class App {
|
|||||||
clearTimeout(this.keepAliveTimer)
|
clearTimeout(this.keepAliveTimer)
|
||||||
}
|
}
|
||||||
this.keepAliveTimer = setTimeout(this.connect.bind(this), this.keepAliveSeconds * 1000)
|
this.keepAliveTimer = setTimeout(this.connect.bind(this), this.keepAliveSeconds * 1000)
|
||||||
|
if (this.connectTime != null) {
|
||||||
|
const now = Date.now()
|
||||||
|
if (now - this.connectTime > this.maxConnectionLifetimeSeconds * 1000) {
|
||||||
|
// maximum connection lifetime exceeded => reconnect
|
||||||
|
this.connect()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
disconnect() {
|
disconnect() {
|
||||||
if (this.eventSource != null) {
|
if (this.eventSource != null) {
|
||||||
this.eventSource.close()
|
this.eventSource.close()
|
||||||
this.eventSource = null
|
this.eventSource = null
|
||||||
|
this.connectTime = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -429,6 +441,7 @@ export default class App {
|
|||||||
that.update()
|
that.update()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
this.connectTime = Date.now()
|
||||||
}
|
}
|
||||||
|
|
||||||
run() {
|
run() {
|
||||||
|
|||||||
Reference in New Issue
Block a user