added fetching data with socketio
This commit is contained in:
@@ -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 };
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -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
@@ -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') {
|
||||
|
||||
Reference in New Issue
Block a user