mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-07-12 10:53:53 +00:00
delete games older than 1 hour
This commit is contained in:
@@ -43,12 +43,6 @@ export class GameManager {
|
||||
this.games.set(game.id, game)
|
||||
}
|
||||
|
||||
startGame(lobby: Lobby) {
|
||||
const gs = new GameServer(this.random.nextID(), lobby.clients, defaultConfig)
|
||||
this.games.set(gs.id, gs)
|
||||
gs.start()
|
||||
}
|
||||
|
||||
tick() {
|
||||
const now = Date.now()
|
||||
|
||||
@@ -56,7 +50,7 @@ export class GameManager {
|
||||
const expired = this.lobbies().filter(l => l.isExpired(now - 2000))
|
||||
this._lobbies = new Map(active.map(lobby => [lobby.id, lobby]));
|
||||
expired.forEach(lobby => {
|
||||
const game = new GameServer(lobby.id, lobby.clients, this.settings)
|
||||
const game = new GameServer(lobby.id, now, lobby.clients, this.settings)
|
||||
this.games.set(game.id, game)
|
||||
game.start()
|
||||
})
|
||||
@@ -65,5 +59,15 @@ export class GameManager {
|
||||
this.lastNewLobby = now
|
||||
this.addLobby(new Lobby(this.random.nextID(), this.settings.lobbyLifetime()))
|
||||
}
|
||||
|
||||
const activeGames: Map<GameID, GameServer> = new Map()
|
||||
for (const [id, game] of this.games) {
|
||||
if (game.isActive()) {
|
||||
activeGames.set(id, game)
|
||||
} else {
|
||||
game.endGame()
|
||||
}
|
||||
}
|
||||
//this.games = activeGames
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@ export class GameServer {
|
||||
|
||||
constructor(
|
||||
public readonly id: GameID,
|
||||
private startTime: number,
|
||||
private clients: Map<ClientID, Client>,
|
||||
private settings: Config,
|
||||
) {
|
||||
@@ -67,8 +68,18 @@ export class GameServer {
|
||||
})
|
||||
}
|
||||
|
||||
private tick(event: TickEvent) {
|
||||
public isActive(): boolean {
|
||||
return Date.now() - this.startTime < 1000 * 60 * 60 // 1 hour
|
||||
}
|
||||
|
||||
endGame() {
|
||||
// Close all WebSocket connections
|
||||
this.clients.forEach(client => {
|
||||
client.ws.removeAllListeners('message');
|
||||
if (client.ws.readyState === WebSocket.OPEN) {
|
||||
client.ws.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user