projects
/
vchess.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix Magnetic flags update (when rooks are magnetically moved)
[vchess.git]
/
sockets.js
diff --git
a/sockets.js
b/sockets.js
index
c3190aa
..
820a88c
100644
(file)
--- a/
sockets.js
+++ b/
sockets.js
@@
-1,16
+1,6
@@
-
//
const url = require('url');
+const url = require('url');
const Variants = require("./variants");
const Variants = require("./variants");
-function getJsonFromUrl(url) {
- var query = url.substr(2); //starts with "/?"
- var result = {};
- query.split("&").forEach(function(part) {
- var item = part.split("=");
- result[item[0]] = decodeURIComponent(item[1]);
- });
- return result;
-}
-
module.exports = function(wss) {
let clients = { "index": {} };
module.exports = function(wss) {
let clients = { "index": {} };
@@
-18,14
+8,10
@@
module.exports = function(wss) {
for (const v of Variants)
clients[v.name] = {};
for (const v of Variants)
clients[v.name] = {};
- // TODO: when relaying to opponent, check readyState, potential setTimeout()? + send opponent (re)disconnect
- // (resign, newgame, newmove). See https://github.com/websockets/ws/blob/master/lib/websocket.js around line 313
-
wss.on("connection", (socket, req) => {
wss.on("connection", (socket, req) => {
- //const params = new URL("http://localhost" + req.url).searchParams;
- var query = getJsonFromUrl(req.url);
- const sid = query["sid"]; //params.get("sid");
- const page = query["page"]; //params.get("page");
+ const params = new URL("http://localhost" + req.url).searchParams;
+ const sid = params.get("sid");
+ const page = params.get("page");
clients[page][sid] = socket;
if (page == "index")
{
clients[page][sid] = socket;
if (page == "index")
{
@@
-50,12
+36,21
@@
module.exports = function(wss) {
switch (obj.code)
{
case "newmove":
switch (obj.code)
{
case "newmove":
- clients[page][obj.oppid].send(JSON.stringify({code:"newmove",move:obj.move}));
+ if (!!clients[page][obj.oppid])
+ clients[page][obj.oppid].send(JSON.stringify({code:"newmove",move:obj.move}));
break;
case "ping":
if (!!clients[page][obj.oppid])
socket.send(JSON.stringify({code:"pong"}));
break;
break;
case "ping":
if (!!clients[page][obj.oppid])
socket.send(JSON.stringify({code:"pong"}));
break;
+ case "lastate":
+ if (!!clients[page][obj.oppid])
+ {
+ const oppId = obj.oppid;
+ obj.oppid = sid; //I'm oppid for my opponent
+ clients[page][oppId].send(JSON.stringify(obj));
+ }
+ break;
case "newgame":
if (!!games[page])
{
case "newgame":
if (!!games[page])
{
@@
-65,13
+60,15
@@
module.exports = function(wss) {
delete games[page];
const mycolor = Math.random() < 0.5 ? 'w' : 'b';
socket.send(JSON.stringify({code:"newgame",fen:fen,oppid:oppId,color:mycolor}));
delete games[page];
const mycolor = Math.random() < 0.5 ? 'w' : 'b';
socket.send(JSON.stringify({code:"newgame",fen:fen,oppid:oppId,color:mycolor}));
- clients[page][oppId].send(JSON.stringify({code:"newgame",fen:fen,oppid:sid,color:mycolor=="w"?"b":"w"}));
+ if (!!clients[page][oppId])
+ clients[page][oppId].send(JSON.stringify({code:"newgame",fen:fen,oppid:sid,color:mycolor=="w"?"b":"w"}));
}
else
games[page] = {id:sid, fen:obj.fen}; //wait for opponent
break;
case "resign":
}
else
games[page] = {id:sid, fen:obj.fen}; //wait for opponent
break;
case "resign":
- clients[page][obj.oppid].send(JSON.stringify({code:"resign"}));
+ if (!!clients[page][obj.oppid])
+ clients[page][obj.oppid].send(JSON.stringify({code:"resign"}));
break;
}
});
break;
}
});