websockets stabiler machen
parent
789bc20106
commit
3d633aff70
|
|
@ -6,7 +6,6 @@ import { setupStartRound } from "./start-round.js";
|
||||||
const gameId = getParam("gameId");
|
const gameId = getParam("gameId");
|
||||||
const username = getParam("username");
|
const username = getParam("username");
|
||||||
|
|
||||||
|
|
||||||
// 1) Parameter prüfen
|
// 1) Parameter prüfen
|
||||||
if (!gameId || !username) {
|
if (!gameId || !username) {
|
||||||
alert("Ungültige oder fehlende URL-Parameter!");
|
alert("Ungültige oder fehlende URL-Parameter!");
|
||||||
|
|
@ -47,26 +46,24 @@ setTimeout(() => notice.remove(), 3000);
|
||||||
// 4) Spiel-Code ins DOM schreiben
|
// 4) Spiel-Code ins DOM schreiben
|
||||||
document.getElementById("gameId").textContent = gameId;
|
document.getElementById("gameId").textContent = gameId;
|
||||||
|
|
||||||
// 5) WebSocket einrichten und Spieler laden
|
// 5) WebSocket mit Reconnect-Logik
|
||||||
const protocol = location.protocol === "https:" ? "wss" : "ws";
|
let socket;
|
||||||
const socket = new WebSocket(
|
function connectWebSocket() {
|
||||||
|
const protocol = location.protocol === "https:" ? "wss" : "ws";
|
||||||
|
socket = new WebSocket(
|
||||||
`${protocol}://${location.host}/ws/${gameId}?username=${encodeURIComponent(username)}`
|
`${protocol}://${location.host}/ws/${gameId}?username=${encodeURIComponent(username)}`
|
||||||
);
|
);
|
||||||
|
|
||||||
socket.addEventListener("open", () => {
|
socket.addEventListener("open", () => {
|
||||||
console.log("WebSocket connected. Requesting player list...");
|
console.log("WebSocket connected. Requesting player list...");
|
||||||
// Fordere die Spielerliste vom Server an, sobald die Verbindung steht.
|
|
||||||
socket.send(JSON.stringify({ type: "requestPlayers" }));
|
socket.send(JSON.stringify({ type: "requestPlayers" }));
|
||||||
// Binde den Handler für den "Runde starten"-Button
|
|
||||||
setupStartRound(socket);
|
setupStartRound(socket);
|
||||||
});
|
});
|
||||||
|
|
||||||
// 6) WebSocket-Nachrichten verarbeiten
|
socket.addEventListener("message", ({ data }) => {
|
||||||
socket.addEventListener("message", ({ data }) => {
|
|
||||||
console.log("WS-Rohdaten:", data);
|
console.log("WS-Rohdaten:", data);
|
||||||
const msg = JSON.parse(data);
|
const msg = JSON.parse(data);
|
||||||
|
|
||||||
|
|
||||||
switch (msg.type) {
|
switch (msg.type) {
|
||||||
case "players":
|
case "players":
|
||||||
console.log("Empfangene Spieler:", msg.players);
|
console.log("Empfangene Spieler:", msg.players);
|
||||||
|
|
@ -87,7 +84,19 @@ socket.addEventListener("message", ({ data }) => {
|
||||||
default:
|
default:
|
||||||
console.warn("Unknown WS message type:", msg.type);
|
console.warn("Unknown WS message type:", msg.type);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
socket.addEventListener("close", () => {
|
||||||
|
console.warn("WebSocket geschlossen, versuche erneut zu verbinden...");
|
||||||
|
setTimeout(connectWebSocket, 2000);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.addEventListener("error", (e) => {
|
||||||
|
console.error("WebSocket Fehler:", e);
|
||||||
|
socket.close();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
connectWebSocket();
|
||||||
|
|
||||||
// 8) Funktion zum Anzeigen einer neuen Runde
|
// 8) Funktion zum Anzeigen einer neuen Runde
|
||||||
const startBtn = document.getElementById("startRound");
|
const startBtn = document.getElementById("startRound");
|
||||||
|
|
@ -156,7 +165,6 @@ function renderScoreboard(scores) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function handleRoundResult({ scores, guesses, owner }) {
|
function handleRoundResult({ scores, guesses, owner }) {
|
||||||
// Scoreboard updaten
|
// Scoreboard updaten
|
||||||
renderScoreboard(scores);
|
renderScoreboard(scores);
|
||||||
|
|
@ -192,6 +200,7 @@ function handleGameEnd({winner}) {
|
||||||
scoreboard.innerHTML = "";
|
scoreboard.innerHTML = "";
|
||||||
}, 6000);
|
}, 6000);
|
||||||
}
|
}
|
||||||
|
|
||||||
// public/js/game.js
|
// public/js/game.js
|
||||||
|
|
||||||
async function playOnSpotify(trackUri, username) {
|
async function playOnSpotify(trackUri, username) {
|
||||||
|
|
@ -219,5 +228,3 @@ async function playOnSpotify(trackUri, username) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
window.playOnSpotify = playOnSpotify;
|
window.playOnSpotify = playOnSpotify;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue