X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FHall.vue;h=6e536ecc6f2f09f33b22a46cb59a325752da7baf;hb=7b01e4470c228c99d3e54c8319a1be20237563c6;hp=d0cfdd17c975d54cfbb16163dccdee91a251b1f9;hpb=485fccd5c925e796b61d5ed0674f29d742ea1a13;p=vchess.git diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue index d0cfdd17..6e536ecc 100644 --- a/client/src/views/Hall.vue +++ b/client/src/views/Hall.vue @@ -146,10 +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; + if (!!this.st.conn && this.st.conn.readyState == 1) //1 == OPEN state + funcPollClients(); + else //socket not ready yet (initial loading) + { + const socketOpenListener = funcPollClients; + this.st.conn.onopen = socketOpenListener; + } // TODO: is this required here? this.oldOnmessage = this.st.conn.onmessage || Function.prototype; this.st.conn.onmessage = this.socketMessageListener; @@ -176,15 +182,12 @@ export default { showGame: function(g) { // NOTE: we are an observer, since only games I don't play are shown here // ==> Moves sent by connected remote player(s) if live game - -// TODO: this doesn't work: choose a SID at random - // --> do we have players' names ? - - let url = "/" + g.id; + let url = "/game/" + g.id; if (g.type == "live") { - const sids = g.players.map(p => p.sid).join(","); - url += "?sids=" + sids; + const remotes = g.players.filter(p => this.people.some(pl => pl.sid == p.sid)); + const rIdx = (remotes.length == 1 ? 0 : Math.floor(Math.random()*2)); + url += "?rid=" + remotes[rIdx].sid; } this.$router.push(url); }, @@ -277,6 +280,10 @@ export default { vid: c.vid, timeControl: c.timeControl }; + + // TODO: understand multiple (increasing) "send challenge" events.... (when potential opponent navigate Hall --> variants --> Hall) +console.log("send challenge to " + data.from); + this.st.conn.send(JSON.stringify({code:"challenge", chall:myChallenge, target:data.from})); } @@ -311,6 +318,9 @@ export default { } case "challenge": { + +console.log(data.chall); + // Receive challenge from some player (+sid) let newChall = data.chall; newChall.type = this.classifyObject(data.chall); @@ -325,11 +335,14 @@ export default { { // Receive game from some player (+sid) // NOTE: it may be correspondance (if newgame while we are connected) - let newGame = data.game; - newGame.type = this.classifyObject(data.game); - newGame.rid = data.from; - newGame.score = "*"; - this.games.push(newGame); + if (!this.games.some(g => g.id == data.game.id)) //ignore duplicates + { + let newGame = data.game; + newGame.type = this.classifyObject(data.game); + newGame.rid = data.from; + newGame.score = "*"; + this.games.push(newGame); + } break; } case "newgame": @@ -542,9 +555,3 @@ export default { - -