server for my chess game
client-client request system?
bendn 2022-05-26
parent f4b8fda · commit e1cd7e1
-rw-r--r--src/index.js42
1 files changed, 30 insertions, 12 deletions
diff --git a/src/index.js b/src/index.js
index 55786a3..a221c29 100644
--- a/src/index.js
+++ b/src/index.js
@@ -13,6 +13,8 @@ const HEADERS = {
stopgame: "K",
ping: "P",
startgame: "S",
+ listgames: "L",
+ request: "R",
};
let games = {};
@@ -31,11 +33,10 @@ wss.on("connection", (ws) => {
let recieve = gdCom.getVar(Buffer.from(message)).value;
let data = recieve.data;
let header = recieve.header;
- console.log(`packet ${data} recieved with header ${header}`);
if (header) {
switch (header) {
case HEADERS.move:
- handle_move(data);
+ handle_move(data, ws);
break;
case HEADERS.joinrequest:
handle_joinrequest(data, ws);
@@ -44,16 +45,19 @@ wss.on("connection", (ws) => {
handle_hostrequest(data, ws);
break;
case HEADERS.stopgame:
- handle_stop(data);
+ handle_stop(data, ws);
break;
case HEADERS.ping:
send_packet("", HEADERS.ping, ws);
break;
case HEADERS.startgame:
- wss.clients.forEach((client) => {
+ games[data].forEach((client) => {
send_packet("", HEADERS.startgame, client);
});
break;
+ case HEADERS.request:
+ handle_request(data, ws);
+ break;
default:
console.log(`header ${header} unknown`);
break;
@@ -62,18 +66,18 @@ wss.on("connection", (ws) => {
});
});
-function handle_move(data) {
- if (games[data.gamecode] !== undefined) {
- console.log("move: " + data.move);
+function handle_move(data, ws) {
+ if (games[data.gamecode].includes(ws)) {
games[data.gamecode].forEach((client) => {
send_packet(data, HEADERS.move, client);
});
+ } else {
+ console.log("game not found!");
}
- console.log("game not found!");
}
function handle_joinrequest(data, ws) {
- console.log("joinrequest");
+ console.log("joinrequest", data);
if (games[data] !== undefined) {
if (games[data].length < 2) {
if (games[data][0] !== ws) {
@@ -91,7 +95,7 @@ function handle_joinrequest(data, ws) {
}
function handle_hostrequest(data, ws) {
- console.log("hostrequest");
+ console.log("hostrequest: ", data);
if (games[data] === undefined) {
games[data] = [ws];
send_packet("Y", HEADERS.hostrequest, ws);
@@ -101,12 +105,26 @@ function handle_hostrequest(data, ws) {
}
}
-function handle_stop(data) {
+function handle_stop(data, ws) {
console.log("stopgame " + data);
- if (games[data] !== undefined) {
+ if (games[data].includes(ws)) {
games[data].forEach((client) => {
send_packet("", HEADERS.stopgame, client);
});
delete games[data];
+ } else {
+ console.log("wtf dude");
+ }
+}
+
+function handle_request(data, ws) {
+ let i = games[data.gamecode].indexOf(ws);
+ if (i !== -1) {
+ let sendto = games[data.gamecode][i ? 0 : 1];
+ if (data.answering) {
+ send_packet(data.answer, data.type, sendto);
+ } else {
+ send_packet(data.question, data.type, sendto);
+ }
}
}