You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
2.9 KiB

1 year ago
const express = require('express');
const app = express();
const http = require('http');
const { exit } = require('process');
const server = http.createServer(app);
const { Server } = require("socket.io");
const io = new Server(server);
let rooms = [];
app.get("/", (req, res) => {
res.sendFile(__dirname + '/client/index.html');
1 year ago
});
app.get("/client/main.js", (req, res) => {
res.sendFile(__dirname + '/client/main.js');
});
server.listen(21111, () => {
console.log('listening on *:21111');
1 year ago
});
io.on('connection', (socket1) => {
socket1.on('disconnect',(socket)=>{
console.log(`[Server Side] disconnection : ${socket1.id}`)
rooms.forEach(it =>{
it.players = new Map(
[...it.players]
.filter(([k, v]) => k !== socket1.id )
)
roomChanged(it)
})
})
socket1.on('testing', (socket) => {
data = JSON.parse(socket);
1 year ago
console.clear();
console.log(`[Server Side] JSON : ${socket}`)
console.log(`[Server Side] data : ${data.id}`)
1 year ago
if(rooms.length === 0)
{
map = new Map();
map.set(data.nom,0);
1 year ago
rooms.push({
id: data.id,
players: map
1 year ago
})
roomChanged(rooms[0])
1 year ago
}
else
{
res = rooms.filter(e => e.id === data.id);
if(res[0] != null )
1 year ago
{
console.log(res)
if(res[0].players.get(data.nom) != null)
{
console.log(`[Server Side] Error : le joueur ${data.nom} est dejà dans la room`);
}
else
{
res[0].players.set(data.nom,0);
roomChanged(res[0])
}
1 year ago
}
else{
map = new Map();
map.set(data.nom,0);
1 year ago
rooms.push({
id: data.id,
players: map
1 year ago
});
roomChanged(rooms[rooms.length-1])
1 year ago
}
}
displayAllRooms(rooms);
})
})
1 year ago
function displayAllRooms(rooms)
{
console.log(`[Server Side] number of rooms : ${rooms.length}`);
console.log(`------------`);
rooms.forEach(element => {
console.log(`[Server Side] room : ${element.id}`);
displayAllPlayers(element.players);
1 year ago
console.log(`------------`);
});
}
1 year ago
function displayAllPlayers(players)
{
console.log("[Server Side]: Players :")
players.forEach((element,key) => {
console.log(`[Server Side]: ${key} -> ${element}`);
});
}
function roomChanged(room)
{
if(room.players.size === 0)
{
rooms = rooms.filter((it)=>{
it !== room
})
}
room.players.forEach((element,key) => {
io.to(key).emit('players',JSON.stringify(Array.from(room.players.entries())))
1 year ago
});
}