-
- let clients = { "index": {} };
- let games = {}; //pending games (player sid)
- for (const v of Variants)
- clients[v.name] = {};
-
-// // Safety counter (TODO: is it necessary ?)
-// setInterval(() => {
-// Object.keys(clients).forEach(k => {
-// Object.keys(clients[k]).forEach(ck => {
-// if (!clients[k][ck] || clients[k][ck].readyState != 1)
-// delete clients[k][ck];
-// });
-// });
-// }, 60000); //every minute (will be lowered if a lot of users...)
-
- // No-op function as a callback when sending messages
- const noop = () => { };
-
- wss.on("connection", (socket, req) => {
- const params = new URL("http://localhost" + req.url).searchParams;
- const sid = params.get("sid");
- const page = params.get("page");
- // Ignore duplicate connections:
- if (!!clients[page][sid])
- {
- socket.send(JSON.stringify({code:"duplicate"}));
- return;
- }
- clients[page][sid] = socket;
- if (page == "index")
- {
- // Send counting info
- const countings = {};
- for (const v of Variants)
- countings[v.name] = Object.keys(clients[v.name]).length;
- socket.send(JSON.stringify({code:"counts",counts:countings}));
- }
- else
- {
- // Send to every client connected on index an update message for counts
- Object.keys(clients["index"]).forEach( k => {
- clients["index"][k].send(JSON.stringify({code:"increase",vname:page}), noop);
- });
- // Also notify potential opponents: hit all clients which check if sid corresponds
- Object.keys(clients[page]).forEach( k => {
- clients[page][k].send(JSON.stringify({code:"connect",id:sid}), noop);
- });
- socket.on("message", objtxt => {
- let obj = JSON.parse(objtxt);
- switch (obj.code)
+ db.serialize(function() {
+ db.all("SELECT * FROM Variants", (err,variants) => {
+ let clients = { "index": {} };
+ let games = {}; //pending games (player sid)
+ for (const v of variants)
+ clients[v.name] = {};
+ // No-op function as a callback when sending messages
+ const noop = () => { };
+ wss.on("connection", (socket, req) => {
+ const params = new URL("http://localhost" + req.url).searchParams;
+ const sid = params.get("sid");
+ const page = params.get("page");
+ // Ignore duplicate connections:
+ if (!!clients[page][sid])