X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FHall.vue;h=132c31ba2e75c86addf8691d7deadba53df882ee;hb=882ec6fe88ac4a536dd25eca5fd50ff3d27f7994;hp=e60d982fe916cc04c61913e890c9b0b08d7ab7fb;hpb=c0250d0a78682d9d6eee3193a4573c7aeaf7b32f;p=vchess.git diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue index e60d982f..132c31ba 100644 --- a/client/src/views/Hall.vue +++ b/client/src/views/Hall.vue @@ -253,6 +253,7 @@ export default { presetChalls: JSON.parse(localStorage.getItem("presetChalls") || "[]"), conn: null, connexionString: "", + socketCloseListener: 0, // Related to (killing of) self multi-connects: newConnect: {}, killed: {} @@ -306,7 +307,16 @@ export default { this.conn = new WebSocket(this.connexionString); this.conn.onopen = connectAndPoll; this.conn.addEventListener("message", this.socketMessageListener); - this.conn.addEventListener("close", this.socketCloseListener); + this.socketCloseListener = setInterval( + () => { + if (this.conn.readyState == 3) { + this.conn.removeEventListener("message", this.socketMessageListener); + this.conn = new WebSocket(this.connexionString); + this.conn.addEventListener("message", this.socketMessageListener); + } + }, + 1000 + ); }, mounted: function() { ["peopleWrap", "infoDiv", "newgameDiv"].forEach(eltName => { @@ -396,10 +406,10 @@ export default { }, methods: { cleanBeforeDestroy: function() { + clearInterval(this.socketCloseListener); document.removeEventListener('visibilitychange', this.visibilityChange); window.removeEventListener("beforeunload", this.cleanBeforeDestroy); this.conn.removeEventListener("message", this.socketMessageListener); - this.conn.removeEventListener("close", this.socketCloseListener); this.send("disconnect"); this.conn = null; }, @@ -595,7 +605,7 @@ export default { // Do not set name or id: identity unknown yet this.people[sid] = { tmpIds: data.sockIds[sid] }; else - Object.assign(this.people[s.sid].tmpIds, data.sockIds[sid]); + Object.assign(this.people[sid].tmpIds, data.sockIds[sid]); if (Object.values(data.sockIds[sid]).some(v => v.page == "/")) // Peer is in Hall this.send("askchallenges", { target: sid }); @@ -838,12 +848,6 @@ export default { break; } }, - socketCloseListener: function() { - if (!this.conn) return; - this.conn = new WebSocket(this.connexionString); - this.conn.addEventListener("message", this.socketMessageListener); - this.conn.addEventListener("close", this.socketCloseListener); - }, loadMoreCorr: function() { ajax( "/observedgames",