Fix accumulation of socket.close code. Ready to finish Game.js and then the website
[vchess.git] / client / src / views / Hall.vue
index b6cac48..a16b5b5 100644 (file)
@@ -146,16 +146,16 @@ export default {
       );
     }
     // 0.1] Ask server for room composition:
-    const socketOpenListener = () => {
+    const funcPollClients = () => {
       this.st.conn.send(JSON.stringify({code:"pollclients"}));
     };
-    this.st.conn.onopen = socketOpenListener;
-    // TODO: is this required here?
-    this.oldOnmessage = this.st.conn.onmessage || Function.prototype;
+    if (!!this.st.conn && this.st.conn.readyState == 1) //1 == OPEN state
+      funcPollClients();
+    else //socket not ready yet (initial loading)
+      this.st.conn.onopen = funcPollClients;
     this.st.conn.onmessage = this.socketMessageListener;
-    const oldOnclose = this.st.conn.onclose;
     const socketCloseListener = () => {
-      oldOnclose(); //reinitialize connexion (in store.js)
+      store.socketCloseListener(); //reinitialize connexion (in store.js)
       this.st.conn.addEventListener('message', this.socketMessageListener);
       this.st.conn.addEventListener('close', socketCloseListener);
     };
@@ -229,9 +229,6 @@ export default {
     },
     // Messaging center:
     socketMessageListener: function(msg) {
-      // Save and call current st.conn.onmessage if one was already defined
-      // --> also needed in future Game.vue (also in Chat.vue component)
-      this.oldOnmessage(msg);
       const data = JSON.parse(msg.data);
       switch (data.code)
       {
@@ -464,6 +461,8 @@ export default {
             cid: c.id, target: c.from.sid}));
         }
       }
+      else
+        localStorage.removeItem("challenge");
       // In all cases, the challenge is consumed:
       ArrayFun.remove(this.challenges, ch => ch.id == c.id);
       // NOTE: deletechallenge event might be redundant (but it's easier this way)