From fcd7ffe95639ac74117e438ba68c5e3df7560dcb Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 20 Jan 2024 21:23:33 +0900 Subject: enhance(reversi): tweak reversi --- .../backend/src/server/api/stream/channels/reversi-game.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'packages/backend/src/server/api/stream') diff --git a/packages/backend/src/server/api/stream/channels/reversi-game.ts b/packages/backend/src/server/api/stream/channels/reversi-game.ts index 2d8c396db9..c5d05e5cfb 100644 --- a/packages/backend/src/server/api/stream/channels/reversi-game.ts +++ b/packages/backend/src/server/api/stream/channels/reversi-game.ts @@ -46,7 +46,7 @@ class ReversiGameChannel extends Channel { case 'ready': this.ready(body); break; case 'updateSettings': this.updateSettings(body.key, body.value); break; case 'putStone': this.putStone(body.pos, body.id); break; - case 'syncState': this.syncState(body.crc32); break; + case 'heatbeat': this.heatbeat(body.crc32); break; } } @@ -83,15 +83,21 @@ class ReversiGameChannel extends Channel { } @bindThis - private async syncState(crc32: string | number) { + private async heatbeat(crc32?: string | number | null) { // TODO: キャッシュしたい const game = await this.reversiGamesRepository.findOneBy({ id: this.gameId! }); if (game == null) throw new Error('game not found'); if (!game.isStarted) return; - if (crc32.toString() !== game.crc32) { - this.send('rescue', await this.reversiGameEntityService.packDetail(game, this.user)); + if (crc32 != null) { + if (crc32.toString() !== game.crc32) { + this.send('rescue', await this.reversiGameEntityService.packDetail(game, this.user)); + } + } + + if (this.user && (game.user1Id === this.user.id || game.user2Id === this.user.id)) { + this.reversiService.heatbeat(game, this.user); } } -- cgit v1.2.3-freya