aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/components/MultiplayerGrid.js11
-rw-r--r--src/server/index.js23
2 files changed, 25 insertions, 9 deletions
diff --git a/src/components/MultiplayerGrid.js b/src/components/MultiplayerGrid.js
index 5954afa..7c00f17 100644
--- a/src/components/MultiplayerGrid.js
+++ b/src/components/MultiplayerGrid.js
@@ -32,6 +32,7 @@ const MultiplayerGrid = (props) => {
const setMessage = props.setMessage;
const setShowMessage = props.setShowMessage;
+ // host/join room
useEffect(() => {
if (isHost) {
socket.emit("host");
@@ -41,14 +42,20 @@ const MultiplayerGrid = (props) => {
setShowMessage(true);
});
- socket.on('user joined', () => {
+ socket.on("player joined", () => {
setMessage("Opponent Joined")
setShowMessage(true)
setTimeout(() => setShowMessage(false), 3000)
})
} else {
socket.emit("join", prompt("Enter ID"));
- socket.on("join fail", () => alert("join fail"));
+
+ // error if room doesn't exist
+ socket.on("join failed", () => {
+ setMessage("Error: room not found")
+ setShowMessage(true)
+ setTimeout(() => window.location.reload(), 3000)
+ });
}
}, [isHost, setMessage, setShowMessage]);
diff --git a/src/server/index.js b/src/server/index.js
index a4c9c5c..5eeff99 100644
--- a/src/server/index.js
+++ b/src/server/index.js
@@ -12,20 +12,24 @@ const io = require("socket.io")(http, {
}
});
-// also checks for duplicates
-const getCode = () => {
- const code = `${Math.floor(1000 + Math.random() * 9000)}`;
-
+// check if room exists
+const checkCode = (code) => {
const connectedSockets = [];
io.sockets.sockets.forEach(
(i) => connectedSockets.push(i)
);
+ // returns true if room exists
return connectedSockets.some(
(i) => Array.from(i.rooms)[1] === code
- ) ? getCode() : code;
+ );
}
+// generate new room code
+// also checks for duplicates
+const getCode = (code = `${Math.floor(1000 + Math.random() * 9000)}`) =>
+ checkCode(code) ? getCode : code;
+
const allEqual = (arr) =>
arr.includes(2) ? false : arr.every(i => i === arr[0])
@@ -59,8 +63,13 @@ io.on('connection', (socket) => {
});
socket.on('join', (code) => {
- socket.join(code);
- io.to(code).emit('user joined');
+ if (checkCode(code)) {
+ socket.join(code);
+ io.to(code).emit('player joined');
+ } else {
+ // error if room doesn't exist
+ socket.emit('join failed')
+ }
});
socket.on('update-remote-data', (data) => {