Skip to content

Commit

Permalink
Adding buffer to avoid rate limit for nickname updates (#56)
Browse files Browse the repository at this point in the history
  • Loading branch information
jchu231 committed May 8, 2024
1 parent 0f4e0f1 commit 9e906e3
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
16 changes: 12 additions & 4 deletions client/src/scenes/GameScene.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ export class GameScene extends Scene {
private respawnText: Phaser.GameObjects.Text | undefined = undefined;
private endText: Phaser.GameObjects.Text | undefined = undefined;
private disconnectText: Phaser.GameObjects.Text | undefined = undefined;
private serverRequestBuffer: number = Date.now();

static SERVER_REQ_BUFFER_LENGTH = 500;
static NAME = "scene-game";

constructor() {
Expand Down Expand Up @@ -334,10 +336,16 @@ export class GameScene extends Scene {
state.players
.filter((p) => p.id === this.currentUserID && p.nickname !== sessionStorage.getItem("bullet-mania-nickname"))
.forEach(() => {
this.connection?.writeJson({
type: ClientMessageType.SetNickname,
nickname: sessionStorage.getItem("bullet-mania-nickname"),
});
if (
sessionStorage.getItem("bullet-mania-nickname") &&
Date.now() - this.serverRequestBuffer > GameScene.SERVER_REQ_BUFFER_LENGTH
) {
this.serverRequestBuffer = Date.now();
this.connection?.writeJson({
type: ClientMessageType.SetNickname,
nickname: sessionStorage.getItem("bullet-mania-nickname"),
});
}
});

// calc leaderboard
Expand Down
12 changes: 9 additions & 3 deletions server/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ const store: Application = {

if (message.type === ClientMessageType.SetNickname) {
player.nickname = message.nickname;
updateRoomConfig(game, roomId);
updateRoomConfig(game, roomId, player);
} else if (message.type === ClientMessageType.SetDirection) {
player.direction = message.direction;
} else if (message.type === ClientMessageType.SetAngle) {
Expand Down Expand Up @@ -471,11 +471,17 @@ async function endGameCleanup(roomId: string, game: InternalState, winningPlayer
}, 10000);
}

async function updateRoomConfig(game: InternalState, roomId: string) {
async function updateRoomConfig(game: InternalState, roomId: string, playerNewNickname?: InternalPlayer) {
const roomConfig: RoomConfig = {
capacity: 0,
winningScore: game.winningScore,
playerNicknameMap: Object.fromEntries(game.players.map((player) => [player.id, player.nickname ?? player.id])),
playerNicknameMap: Object.fromEntries(game.players.map((player) => {
if (playerNewNickname && player.id == playerNewNickname.id) {
return [player.id, playerNewNickname.nickname ?? player.id];
} else {
return [player.id, player.nickname ?? player.id];
}
})),
isGameEnd: game.isGameEnd,
winningPlayerId: game.winningPlayerId,
};
Expand Down

0 comments on commit 9e906e3

Please sign in to comment.