// but the requested resource can be from any tmpId (except current!)
case "askidentity":
case "asklastate":
- case "askchallenge":
+ case "askchallenges":
case "askgame":
case "askfullgame": {
const pg = obj.page || page; //required for askidentity and askgame
// Notify all room: mostly game events
case "newchat":
case "newchallenge":
- case "deletechallenge":
+ case "deletechallenge_s":
case "newgame":
case "resign":
case "abort":
case "drawoffer":
case "rematchoffer":
case "draw":
- if (!!obj.oppsid)
- // "newgame" message from Hall: do not target players
- notifyAllBut(page, "newgame", {data: obj.data}, [sid, obj.oppsid]);
- else notifyRoom(page, obj.code, {data: obj.data});
+ notifyRoom(page, obj.code, {data: obj.data});
break;
case "rnewgame":
- // A rematch game started: players are already informed
+ // A rematch game started:
+ // NOTE: no need to explicitely notify Hall: the game will be sent
notifyAllBut(page, "newgame", {data: obj.data}, [sid]);
- notifyAllBut("/", "newgame", {data: obj.data}, [sid, obj.oppsid]);
notifyRoom("/mygames", "newgame", {data: obj.data});
break;
case "notifynewgame":
if (!!clients["/mygames"]) {
obj.targets.forEach(t => {
- const k = t.sid || idToSid[t.uid];
+ const k = t.sid || idToSid[t.id];
if (!!clients["/mygames"][k]) {
Object.keys(clients["/mygames"][k]).forEach(x => {
send(
// Passing, relaying something: from isn't needed,
// but target is fully identified (sid + tmpId)
- case "challenge":
+ case "challenges":
case "fullgame":
case "game":
case "identity":