const express = require('express'); const { createServer } = require('node:http'); const { join } = require('node:path'); const Chance = require('chance'); const mongoose = require("mongoose"); const app = express(); const server = createServer(app); const io = require('socket.io')(server, { cors: { origin: "*" } }); const Game = require("./schemas/game-schema"); const databaseUrl = "mongodb://dama:dama@localhost:27017/dama"; const chance = new Chance(); mongoose.connect(databaseUrl, { useUnifiedTopology: true }); io.on('connection', (socket) => { console.log('a user ' + socket.id + ' connected'); socket.on('disconnect', async () => { console.log('user disconnected'); await Game.deleteMany({owner}); }) socket.on('createGameRequest', ({userName}, callback) => { const roomId = chance.guid(); const inviteCode = chance.string({ length: 5, casing: 'upper', alpha: true, numeric: true, symbols: false }); socket.join(roomId); newGame = new Game({ owner: socket.id, player1: socket.id, player1_name: userName, player2: null, player2_name: null, channel: roomId, white: 1, black: 2, public: false, started: false, inviteCode: inviteCode, currentPlayer: null, missedOportunities: [String], pieces: [ { id: Integer, x: Integer, y: Integer, player: String, type: String } ] }); newGame.save(); callback({ status: "success", inviteCode:inviteCode, socket:socket.id, roomId:roomId}); }); socket.on('joinGameRequest', () => { }); socket.on('randomJoinRequest', () => { }); }); server.listen(3000, () => { console.log('server running at http://localhost:3000'); });