refactored backend

This commit is contained in:
Wenszel
2023-11-25 19:30:07 +01:00
parent ffaaf0b6f3
commit a1b39a3a45
14 changed files with 231 additions and 163 deletions
+14
View File
@@ -0,0 +1,14 @@
const CONNECTION_URI = require('../credentials.js');
module.exports = function (mongoose) {
mongoose.set('useFindAndModify', false);
mongoose
.connect(CONNECTION_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => {
console.log('MongoDB Connected…');
})
.catch(err => console.error(err));
};
+23
View File
@@ -0,0 +1,23 @@
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',
});
const sessionMiddleware = session({
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);
module.exports = { sessionMiddleware, wrap };
+26
View File
@@ -0,0 +1,26 @@
const socketManager = require('../socket/socketManager');
const registerPlayerHandlers = require('../handlers/playerHandler');
const registerRoomHandlers = require('../handlers/roomHandler');
const registerGameHandlers = require('../handlers/gameHandler');
const { sessionMiddleware, wrap } = require('../config/session');
module.exports = function (server) {
socketManager.initialize(server);
socketManager.getIO().engine.on('initial_headers', (headers, req) => {
if (req.cookieHolder) {
headers['set-cookie'] = req.cookieHolder;
delete req.cookieHolder;
}
});
socketManager.getIO().use(wrap(sessionMiddleware));
socketManager.getIO().on('connection', socket => {
registerPlayerHandlers(socket);
registerRoomHandlers(socket);
registerGameHandlers(socket);
if (socket.request.session.roomId) {
const roomId = socket.request.session.roomId.toString();
socket.join(roomId);
socket.emit('player:data', JSON.stringify(socket.request.session));
}
});
};