mirror of
https://github.com/randyjc/Rahoot.git
synced 2026-03-13 20:15:35 +01:00
Add concurrently
This commit is contained in:
70
socket/index.js
Normal file
70
socket/index.js
Normal file
@@ -0,0 +1,70 @@
|
||||
import { Server } from "socket.io"
|
||||
import { GAME_STATE_INIT } from "./quizz.config.js"
|
||||
import Manager from "./roles/manager.js"
|
||||
import Player from "./roles/player.js"
|
||||
import { abortCooldown } from "./utils/cooldown.js"
|
||||
import deepClone from "./utils/deepClone.js"
|
||||
|
||||
let gameState = deepClone(GAME_STATE_INIT)
|
||||
|
||||
const io = new Server({
|
||||
cors: {
|
||||
origin: "*",
|
||||
},
|
||||
path: "/ws/",
|
||||
})
|
||||
|
||||
io.listen(5157)
|
||||
|
||||
io.on("connection", (socket) => {
|
||||
console.log(`A user connected ${socket.id}`)
|
||||
|
||||
socket.on("player:checkRoom", (roomId) =>
|
||||
Player.checkRoom(gameState, io, socket, roomId),
|
||||
)
|
||||
|
||||
socket.on("player:join", (player) =>
|
||||
Player.join(gameState, io, socket, player),
|
||||
)
|
||||
|
||||
socket.on("manager:createRoom", (password) =>
|
||||
Manager.createRoom(gameState, io, socket, password),
|
||||
)
|
||||
socket.on("manager:kickPlayer", (playerId) =>
|
||||
Manager.kickPlayer(gameState, io, socket, playerId),
|
||||
)
|
||||
|
||||
socket.on("manager:startGame", () => Manager.startGame(gameState, io, socket))
|
||||
|
||||
socket.on("player:selectedAnswer", (answerKey) =>
|
||||
Player.selectedAnswer(gameState, io, socket, answerKey),
|
||||
)
|
||||
|
||||
socket.on("manager:nextQuestion", () =>
|
||||
Manager.nextQuestion(gameState, io, socket),
|
||||
)
|
||||
|
||||
socket.on("manager:showLeaderboard", () =>
|
||||
Manager.showLoaderboard(gameState, io, socket),
|
||||
)
|
||||
|
||||
socket.on("disconnect", () => {
|
||||
console.log(`user disconnected ${socket.id}`)
|
||||
if (gameState.manager === socket.id) {
|
||||
console.log("Reset game")
|
||||
io.to(gameState.room).emit("game:reset")
|
||||
gameState.started = false
|
||||
gameState = deepClone(GAME_STATE_INIT)
|
||||
|
||||
abortCooldown()
|
||||
return
|
||||
}
|
||||
|
||||
const player = gameState.players.find((p) => p.id === socket.id)
|
||||
|
||||
if (player) {
|
||||
gameState.players = gameState.players.filter((p) => p.id !== socket.id)
|
||||
socket.to(gameState.manager).emit("manager:removePlayer", player.id)
|
||||
}
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user