- {
- notifyRoom(page, obj.code, {data:obj.data});
- const mygamesPg = "/mygames";
- if (obj.code == "newmove" && clients[mygamesPg])
- {
- // Relay newmove info to myGames page
- // NOTE: the move itself is not needed (for now at least)
- const newmoveForMygames = {
- gid: page.split("/")[2] //format is "/game/gid"
- };
- obj.data.players.forEach(pSid => {
- if (clients[mygamesPg][pSid])
- {
- Object.keys(clients[mygamesPg][pSid]).forEach(x => {
- send(
- clients[mygamesPg][pSid][x],
- {code:"newmove", data:newmoveForMygames}
- );
- });
- }
+ // TODO: if newmove, change "from" field to fully specified sid + tmpId
+ // ==> allow "gotmove" messages to be fully targetted
+ // Special case re-send newmove only to opponent:
+ if (!!obj.target) {
+ Object.keys(clients[page][obj.target]).forEach(x => {
+ send(
+ clients[page][obj.target][x],
+ {code: "newmove", data: obj.data}
+ );
+ });
+ }
+ 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}
+ );