Files
uno-online/UNO-Backend/server.ts

70 lines
1.7 KiB
TypeScript

import { UnoSockets } from './src/gameLogic/UnoSocket.js'
import express from "express";
import bodyParser from 'body-parser'
import { UnoSession} from './src/gameLogic/UnoSession.js'
import expressWs from 'express-ws';
import http from 'http';
import WebSocket from 'ws';
import { UnoLobby } from './src/lobby/UnoLobby.js';
import { resp } from './src/interface/rest/response.js';
import { watch } from 'fs';
const app = express();
app.use(bodyParser.json())
let unoLobby = new UnoLobby();
app.get('/', (req, res) => res.send('Hello World!'));
//lobby requests
app.get('/unogame/lobbies', (req,res)=>{
resp(req, res, true, unoLobby.getLobbies(), 200);
})
//lobby requests
app.post('/unogame/create', (req,res)=>{
resp(req, res, true, {
id: unoLobby.createLobby(req.body),
}, 200);
})
//lobby join
app.post('/unogame/join', (req,res)=>{
let data = unoLobby.joinLobby(req.body.nick,req.body.lid);
resp(req, res, data[0], data[1], 200);
})
const port = 3000;
const server = app.listen(port, () => console.log(`Example app listening on port ${port}!`));
const wss = new WebSocket.Server({ server });
wss.on('connection', (ws: WebSocket) => {
console.log("connecting socket...")
ws.on('message', (message: string) => { actionHandler(message,ws);});
ws.send('{"msg":"Hello!"}');
});
function actionHandler(message: string, ws: WebSocket){
try{
const command = JSON.parse(message);
console.log(command);
if (command.action == "register"){
unoLobby.registerLobby(message,ws)
}
}catch(ex){
ws.send('{"reply":"Error"}');
}
}