Files
DoubleSnake/testing/SocketIO_Testing/backend/src/index.js
2025-03-13 16:05:09 +01:00

103 lines
2.3 KiB
JavaScript

const express = require("express");
const http = require("http");
const socketIO = require("socket.io");
const bp = require("body-parser");
const path = require("path");
const _PORT = 3000;
const app = express();
const server = http.createServer(app);
/** @type {import("socket.io").Server} */
const io = socketIO(server);
app.use(bp.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, "../../frontend")));
app.use((req, res, next) => {
console.log(`${req.method} | ${req.url}`);
next();
})
const playerList = [];
io.on('connection', (socket) => {
console.log("Es ist ein neuer Spieler beigetreten");
const player = {
id: socket.id,
x: 100,
y: 100,
socket: socket,
};
playerList.push(player);
emitPlayerMovement();
socket.on("moveUp", () => {
const player = playerList.find((p) => p.id === socket.id);
if (player) {
player.y -= 10;
}
emitPlayerMovement();
});
socket.on("moveDown", () => {
const player = playerList.find((p) => p.id === socket.id);
if (player) {
player.y += 10;
}
emitPlayerMovement();
});
socket.on("moveRight", () => {
const player = playerList.find((p) => p.id === socket.id);
if (player) {
player.x += 10;
}
emitPlayerMovement();
});
socket.on("moveLeft", () => {
const player = playerList.find((p) => p.id === socket.id);
if (player) {
player.x -= 10;
}
emitPlayerMovement();
});
// Handle player disconnect
socket.on("disconnect", () => {
console.log(`Spieler ${socket.id} hat das Spiel verlassen`);
const index = playerList.findIndex((p) => p.id === socket.id);
if (index !== -1) {
playerList.splice(index, 1);
}
emitPlayerMovement();
});
socket.on("disconnect", () => {
playerList.splice(playerList.findIndex(p => p.id === socket.id), 1);
})
});
function emitPlayerMovement() {
const playerMap = playerList.map(x => {
return {
id: x.id,
x: x.x,
y: x.y
}
});
io.emit("updatePos", playerMap);
}
server.listen(_PORT, () => {
console.log(`Backend gestartet auf http://localhost:${_PORT}`);
})