From e982f782cbd076d4c464f4396fa058b8b9c016bb Mon Sep 17 00:00:00 2001 From: MiguelMLorente Date: Sun, 9 Feb 2025 20:33:24 +0100 Subject: [PATCH] Broadcast update lobby event to the whole room --- app/src/app.service.ts | 14 +++++++++----- app/src/players/player.service.ts | 7 ++++--- app/src/players/player.ts | 9 +++++++-- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/app/src/app.service.ts b/app/src/app.service.ts index 955b5f6..3024d5d 100644 --- a/app/src/app.service.ts +++ b/app/src/app.service.ts @@ -14,6 +14,7 @@ import { CreateLobbyEvent, emitUpdateLobbyEvent, JoinLobbyEvent, + ServerEvent, } from 'interface'; import { createWsExceptionFilter } from './websocket-exception-filter'; import { @@ -31,7 +32,7 @@ export class AppService implements OnGatewayConnection { private readonly gameService: GameService, ) {} handleConnection(client: Socket) { - this.playerService.createPlayer(client.id); + this.playerService.createPlayer(client); } @UseFilters( @@ -71,9 +72,12 @@ export class AppService implements OnGatewayConnection { this.playerService.getPlayer(client.id), event.lobbyId, ); - emitUpdateLobbyEvent(client, { - playerNames: game.players.map((player) => player.userName), - gameCode: game.gameCode, - }); + const playerNames = game.players.map((player) => player.userName); + game.players.forEach((player) => + emitUpdateLobbyEvent(player.socket, { + playerNames: playerNames, + gameCode: game.gameCode, + }), + ); } } diff --git a/app/src/players/player.service.ts b/app/src/players/player.service.ts index adc7cc8..16fbf82 100644 --- a/app/src/players/player.service.ts +++ b/app/src/players/player.service.ts @@ -4,15 +4,16 @@ import { MissingPlayerNameException, PlayerNotFoundException, } from 'src/exceptions'; +import { Socket } from 'socket.io/dist/socket'; @Injectable() export class PlayerService { private readonly logger = new Logger(PlayerService.name); private readonly players: Map = new Map(); - createPlayer(socketId: string) { - const player: Player = new Player(socketId); - this.players.set(socketId, player); + createPlayer(socket: Socket) { + const player: Player = new Player(socket); + this.players.set(player.socketId, player); } addUserName(socketId: string, userName: string) { diff --git a/app/src/players/player.ts b/app/src/players/player.ts index 331c98e..0ca0e3e 100644 --- a/app/src/players/player.ts +++ b/app/src/players/player.ts @@ -1,7 +1,12 @@ +import { Socket } from "socket.io"; + export class Player { socketId: string; + socket: Socket; userName?: string; - constructor(socketId: string) { - this.socketId = socketId; + + constructor(socket: Socket) { + this.socket = socket; + this.socketId = socket.id; } }