Merge pull request 'Fixed a bug which causes the server to crash when a player that wasn't in a room disconnected.' (#1) from corner/TanksJS-Server:no-room-crash into master

This commit is contained in:
Arne van Iterson 2020-05-18 10:16:34 +02:00
commit da4e418707
2 changed files with 20 additions and 15 deletions

View File

@ -29,6 +29,7 @@ module.exports = {
"semi": [
"error",
"always"
]
],
"no-mixed-spaces-and-tabs": "off"
}
};
};

View File

@ -31,23 +31,27 @@ app.get("/", (req, res) => {
io.on("connection", (socket) => {
// Handle disconnection
socket.on("disconnect", () => {
const room = players[socket.id].room;
delete players[socket.id];
if (players[socket.id]) {
const room = players[socket.id].room;
var playerUpdate = {};
if (io.sockets.adapter.rooms[room]) {
for (const id in io.sockets.adapter.rooms[room].sockets) {
playerUpdate[id] = players[id];
}
}
var playerUpdate = {};
if (io.sockets.adapter.rooms[room]) {
for (const id in io.sockets.adapter.rooms[room].sockets) {
playerUpdate[id] = players[id];
}
}
io.in(room).emit("roomUpdate", playerUpdate);
io.in(room).emit("roomUpdate", playerUpdate);
console.log(traffic.out + colours.disconnect(`User ${String(socket.id)} disconnected from room ${room}`));
console.log(traffic.out + colours.disconnect(`User ${String(socket.id)} disconnected from room ${room}`));
if (io.sockets.adapter.rooms[room] == undefined) {
console.log(traffic.int + colours.room(`Room ${room} has been deleted due to a lack of players`));
if (io.sockets.adapter.rooms[room] == undefined) {
console.log(traffic.int + colours.room(`Room ${room} has been deleted due to a lack of players`));
}
}
delete players[socket.id];
});
// Request identification
@ -125,4 +129,4 @@ io.on("connection", (socket) => {
http.listen(port, () => {
console.log(colours.data(`\nServer ready, listening on port ${port}\n`));
});
});