feat: Update Dockerfile for multi-platform support and add nginx configuration

This commit is contained in:
2026-01-06 16:38:33 +01:00
parent 06d150b8c5
commit b2527ed041
7 changed files with 65 additions and 5 deletions

View File

@@ -21,6 +21,8 @@ object PodManager {
private val userSession: mutable.Map[User, String] = mutable.Map()
private val injector: Injector = Guice.createInjector(KnockOutWebConfigurationModule())
private[logic] var redis: Option[Gateway] = None
def createGame(
host: User,
name: String,
@@ -35,7 +37,8 @@ object PodManager {
host = host
)
sessions += (gameLobby.id -> gameLobby)
userSession += (host -> gameLobby.id)
registerUserToGame(host, gameLobby.id)
redis.foreach(gateway => gateway.syncPod())
gameLobby
}
@@ -46,6 +49,7 @@ object PodManager {
def registerUserToGame(user: User, gameId: String): Boolean = {
if (sessions.contains(gameId)) {
userSession += (user -> gameId)
redis.foreach(gateway => gateway.syncPod())
true
} else {
false
@@ -54,6 +58,7 @@ object PodManager {
def unregisterUserFromGame(user: User): Unit = {
userSession.remove(user)
redis.foreach(gateway => gateway.redis.invalidateUser(user.id.toString))
}
def identifyGameOfUser(user: User): Option[GameLobby] = {
@@ -65,9 +70,12 @@ object PodManager {
private[logic] def removeGame(gameId: String): Unit = {
sessions.remove(gameId)
redis.foreach(gateway => gateway.redis.invalidateGame(gameId))
// Also remove all user sessions associated with this game
userSession.filterInPlace((_, v) => v != gameId)
}
private[logic] def getAllGameIds(): List[String] = sessions.keys.toList
private[logic] def allBoundUsers(): List[String] = userSession.keys.map(_.id.toString).toList
}