added fetching data with socketio

This commit is contained in:
Wenszel
2022-05-30 09:06:59 +02:00
parent 9686276ece
commit 159b96a678
6 changed files with 97 additions and 109 deletions
+16 -16
View File
@@ -1,23 +1,23 @@
const session = require("express-session");
const CONNECTION_URI = require("../credentials.js");
const MongoDBStore = require("connect-mongodb-session")(session);
const session = require('express-session');
const CONNECTION_URI = require('../credentials.js');
const MongoDBStore = require('connect-mongodb-session')(session);
const store = new MongoDBStore({
uri: CONNECTION_URI,
collection: "sessions",
uri: CONNECTION_URI,
collection: 'sessions',
});
const sessionMiddleware = session({
secret: "lalala",
resave: true,
saveUninitialized: false,
store: store,
credentials: true,
cookie: {
httpOnly: false,
secure: false,
},
store: store,
credentials: true,
cookie: {
httpOnly: false,
secure: false,
},
secret: 'secret',
saveUninitialized: true,
resave: true,
maxAge: 20000,
});
const wrap = (expressMiddleware) => (socket, next) =>
expressMiddleware(socket.request, {}, next);
const wrap = expressMiddleware => (socket, next) => expressMiddleware(socket.request, {}, next);
module.exports = { sessionMiddleware, wrap };
+1 -1
View File
@@ -53,7 +53,7 @@ module.exports = (io, socket) => {
ready: false,
color: colors[room.players.length],
});
const updatedRoom = { players: room.players };
let updatedRoom = { players: room.players };
// Checking if the room is full
if (room.players.length === 4) {
// Changes the properties of the room to the state to start the game
+35
View File
@@ -0,0 +1,35 @@
const RoomModel = require('../schemas/room');
module.exports = (io, socket) => {
const req = socket.request;
const getData = () => {
RoomModel.findOne({ _id: req.session.roomId }, function (err, room) {
if (!room) return err;
if (room.nextMoveTime <= Date.now()) {
changeCurrentMovingPlayer();
} else {
io.to(req.session.roomId).emit('room:data', JSON.stringify(room));
}
});
};
socket.on('room:data', getData);
function changeCurrentMovingPlayer() {
RoomModel.findOne({ _id: req.session.roomId }, function (err, room) {
if (!room) return err;
const index = room.players.findIndex(player => player.nowMoving === true);
const roomSize = room.players.length;
room.players[index].nowMoving = false;
if (index + 1 === roomSize) {
room.players[0].nowMoving = true;
} else {
room.players[index + 1].nowMoving = true;
}
room.nextMoveTime = Date.now() + 15000;
RoomModel.findOneAndUpdate({ _id: req.session.roomId }, room, function (err, updatedRoom) {
io.to(req.session.roomId).emit('room:data', JSON.stringify(updatedRoom));
});
});
}
};
-47
View File
@@ -1,47 +0,0 @@
const express = require("express");
const router = express.Router();
const RoomModel = require("../schemas/room");
//get room values
router.get("/", function (req, res) {
RoomModel.findOne(
{ _id: req.session.roomId }, //find room by id
function (err, docs) {
if (err) {
console.log(err);
} else {
if (docs) {
if (docs.nextMoveTime <= Date.now()) {
RoomModel.findOne({ _id: req.session.roomId }, function (err, doc) {
if (err) {
res.status(500).send(err);
} else {
const index = doc.players.findIndex(player => player.nowMoving === true);
const roomSize = doc.players.length;
doc.players[index].nowMoving = false;
if (index + 1 === roomSize) {
doc.players[0].nowMoving = true;
} else {
doc.players[index + 1].nowMoving = true;
}
doc.nextMoveTime = Date.now() + 15000;
RoomModel.findOneAndUpdate({ _id: req.session.roomId }, doc, function (err, docs) {
if (err) {
res.status(500).send(err);
} else {
res.send(docs);
}
});
}
});
} else {
res.send(docs);
}
}
}
}
);
});
module.exports = router;
+3 -3
View File
@@ -3,6 +3,7 @@ const cors = require('cors');
const cookieParser = require('cookie-parser');
const { sessionMiddleware, wrap } = require('./controllers/serverController');
const registerPlayerHandlers = require('./handlers/playerHandler');
const registerRoomHandlers = require('./handlers/roomHandler');
const PORT = 8080;
const mongoose = require('mongoose');
const CONNECTION_URI = require('./credentials.js');
@@ -73,20 +74,19 @@ io.use(wrap(sessionMiddleware));
io.on('connection', socket => {
registerPlayerHandlers(io, socket);
registerRoomHandlers(io, socket);
if (socket.request.session.roomId) {
socket.join(socket.request.session.roomId);
socket.emit('player:data', JSON.stringify(session));
socket.emit('player:data', JSON.stringify(socket.request.session));
io.to(socket.request.session.roomId).emit('player joined');
}
});
//ROUTES CONFIG
const roomRoutes = require('./routes/room');
const playerRoutes = require('./routes/player');
const gameRoutes = require('./routes/game');
app.use('/player', playerRoutes);
app.use('/room', roomRoutes);
app.use('/game', gameRoutes);
if (process.env.NODE_ENV === 'production') {