computed: {
uniquePlayers: function() {
// Show e.g. "@nonymous (5)", and do nothing on click on anonymous
- let anonymous = {id:0, name:"@nonymous", count:0};
- let playerList = [];
+ let anonymous = {name:"@nonymous", count:0};
+ let playerList = {};
this.people.forEach(p => {
if (p.id > 0)
- playerList.push(p);
+ {
+ // We don't count registered users connections: either they are here or not.
+ if (!playerList[p.id])
+ playerList[p.id] = {name: p.name, count: 0};
+ }
else
anonymous.count++;
});
if (anonymous.count > 0)
- playerList.push(anonymous);
- return playerList;
+ playerList[0] = anonymous;
+ return Object.values(playerList);
},
},
created: function() {
});
};
notifyRoom(query["page"], "connect"); //Hall or Game
+ if (query["page"].indexOf("/game/") >= 0)
+ notifyRoom("/", "connect"); //notify main hall
socket.on("message", objtxt => {
let obj = JSON.parse(objtxt);
if (!!obj.target && !clients[obj.target])
return; //receiver not connected, nothing we can do
console.log(obj.code);
-console.log(clients);
switch (obj.code)
{
break;
case "pagechange":
notifyRoom(clients[sid].page, "disconnect");
+ if (clients[sid].page.indexOf("/game/") >= 0)
+ notifyRoom("/", "disconnect");
clients[sid].page = obj.page;
notifyRoom(obj.page, "connect");
+ if (obj.page.indexOf("/game/") >= 0)
+ notifyRoom("/", "connect");
break;
case "askidentity":
clients[obj.target].sock.send(JSON.stringify(
const page = clients[sid].page;
delete clients[sid];
notifyRoom(page, "disconnect");
+ if (page.indexOf("/game/") >= 0)
+ notifyRoom("/", "disconnect"); //notify main hall
});
});
}