X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=server%2Fsockets.js;h=e6e85ed45e9860d477e78d21fe2e7cd3b24db7b2;hp=614696f327fe9bd4d7e181177fb22327a45b5239;hb=e5c1d0fb0ed18632e9172c932d6e5c2c8c5742b8;hpb=757e9fe9f2467d43980dd3ba5316cf029a0b7d10 diff --git a/server/sockets.js b/server/sockets.js index 614696f3..e6e85ed4 100644 --- a/server/sockets.js +++ b/server/sockets.js @@ -178,34 +178,38 @@ module.exports = function(wss) { case "newchallenge": case "newgame": case "deletechallenge": - case "newmove": case "resign": case "abort": case "drawoffer": case "draw": - // TODO: if newmove, change "from" field to fully specified sid + tmpId - // ==> allow "gotmove" messages to be fully targetted + notifyRoom(page, obj.code, {data: obj.data}); + break; + + case "newmove": { + const dataWithFrom = {from: [sid,tmpId], data: obj.data}; // Special case re-send newmove only to opponent: - if (!!obj.target) { + if (!!obj.target && !!clients[page][obj.target]) { Object.keys(clients[page][obj.target]).forEach(x => { send( clients[page][obj.target][x], - {code: "newmove", data: obj.data} + {code: "newmove", dataWithFrom} ); }); + } else { + // NOTE: data.from is useful only to opponent + notifyRoom(page, "newmove", dataWithFrom); } - else notifyRoom(page, obj.code, {data: obj.data}); break; - + } case "gotmove": - // TODO: should fully specify the target and be included in the last case below - if (!!clients[page][obj.target]) { - Object.keys(clients[page][obj.target]).forEach(x => { - send( - clients[pg][obj.target][x], - {code: "gotmove", data: obj.data} - ); - }); + if ( + !!clients[page][obj.target[0]] && + !!clients[page][obj.target[0]][obj.target[1]] + ) { + send( + clients[page][obj.target[0]][obj.target[1]], + {code: "gotmove", data: obj.data} + ); } break;