Skip to content

Commit d32fa2c

Browse files
committed
♻️ destination 생성 위치 변경
1 parent d7911fe commit d32fa2c

File tree

8 files changed

+43
-75
lines changed

8 files changed

+43
-75
lines changed

backend/src/main/java/io/f1/backend/domain/game/app/GameService.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import static io.f1.backend.domain.quiz.mapper.QuizMapper.toGameStartResponse;
44

5-
import io.f1.backend.domain.game.dto.GameStartData;
65
import io.f1.backend.domain.game.dto.request.GameStartRequest;
76
import io.f1.backend.domain.game.dto.response.GameStartResponse;
87
import io.f1.backend.domain.game.event.RoomUpdatedEvent;
@@ -34,7 +33,7 @@ public class GameService {
3433
private final RoomRepository roomRepository;
3534
private final ApplicationEventPublisher eventPublisher;
3635

37-
public GameStartData gameStart(Long roomId, GameStartRequest gameStartRequest) {
36+
public GameStartResponse gameStart(Long roomId, GameStartRequest gameStartRequest) {
3837

3938
Long quizId = gameStartRequest.quizId();
4039

@@ -63,7 +62,7 @@ public GameStartData gameStart(Long roomId, GameStartRequest gameStartRequest) {
6362

6463
eventPublisher.publishEvent(new RoomUpdatedEvent(room, quiz));
6564

66-
return new GameStartData(getDestination(roomId), gameStartResponse);
65+
return gameStartResponse;
6766
}
6867

6968
private Integer checkGameSetting(Room room, Long quizId) {
@@ -83,8 +82,4 @@ private boolean validateReadyStatus(Room room) {
8382

8483
return playerSessionMap.values().stream().allMatch(Player::isReady);
8584
}
86-
87-
private static String getDestination(Long roomId) {
88-
return "/sub/room/" + roomId;
89-
}
9085
}

backend/src/main/java/io/f1/backend/domain/game/app/RoomService.java

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import static io.f1.backend.global.util.SecurityUtils.getCurrentUserNickname;
1414

1515
import io.f1.backend.domain.game.dto.ChatMessage;
16-
import io.f1.backend.domain.game.dto.PlayerReadyData;
1716
import io.f1.backend.domain.game.dto.RoomEventType;
1817
import io.f1.backend.domain.game.dto.RoomExitData;
1918
import io.f1.backend.domain.game.dto.RoomInitialData;
@@ -152,7 +151,6 @@ public RoomInitialData initializeRoomSocket(
152151
ofPlayerEvent(player.getNickname(), RoomEventType.ENTER);
153152

154153
return new RoomInitialData(
155-
getDestination(roomId),
156154
roomSettingResponse,
157155
gameSettingResponse,
158156
playerListResponse,
@@ -166,13 +164,11 @@ public RoomExitData exitRoom(Long roomId, String sessionId, UserPrincipal princi
166164
synchronized (lock) {
167165
Room room = findRoom(roomId);
168166

169-
String destination = getDestination(roomId);
170-
171167
Player removePlayer = getRemovePlayer(room, sessionId, principal);
172168

173169
/* 방 삭제 */
174170
if (isLastPlayer(room, sessionId)) {
175-
return removeRoom(room, destination);
171+
return removeRoom(room);
176172
}
177173

178174
/* 방장 변경 */
@@ -188,24 +184,21 @@ public RoomExitData exitRoom(Long roomId, String sessionId, UserPrincipal princi
188184

189185
PlayerListResponse playerListResponse = toPlayerListResponse(room);
190186

191-
return new RoomExitData(destination, playerListResponse, systemNoticeResponse, false);
187+
return new RoomExitData(playerListResponse, systemNoticeResponse, false);
192188
}
193189
}
194190

195-
public PlayerReadyData handlePlayerReady(Long roomId, String sessionId) {
191+
public PlayerListResponse handlePlayerReady(Long roomId, String sessionId) {
196192
Player player =
197193
roomRepository
198194
.findPlayerInRoomBySessionId(roomId, sessionId)
199195
.orElseThrow(() -> new CustomException(RoomErrorCode.PLAYER_NOT_FOUND));
200196

201197
player.toggleReady();
202198

203-
String destination = getDestination(roomId);
204-
205199
Room room = findRoom(roomId);
206-
PlayerListResponse playerListResponse = toPlayerListResponse(room);
207200

208-
return new PlayerReadyData(destination, playerListResponse);
201+
return toPlayerListResponse(room);
209202
}
210203

211204
public RoomListResponse getAllRooms() {
@@ -227,24 +220,21 @@ public RoomListResponse getAllRooms() {
227220
public RoundResult chat(Long roomId, String sessionId, ChatMessage chatMessage) {
228221
Room room = findRoom(roomId);
229222

230-
String destination = getDestination(roomId);
231-
232223
if (!room.isPlaying()) {
233-
return buildResultOnlyChat(destination, chatMessage);
224+
return buildResultOnlyChat(chatMessage);
234225
}
235226

236227
Question currentQuestion = room.getCurrentQuestion();
237228

238229
String answer = currentQuestion.getAnswer();
239230

240231
if (!answer.equals(chatMessage.message())) {
241-
return buildResultOnlyChat(destination, chatMessage);
232+
return buildResultOnlyChat(chatMessage);
242233
}
243234

244235
room.increasePlayerCorrectCount(sessionId);
245236

246237
return RoundResult.builder()
247-
.destination(destination)
248238
.questionResult(
249239
toQuestionResultResponse(currentQuestion.getId(), chatMessage, answer))
250240
.rankUpdate(toRankUpdateResponse(room))
@@ -262,9 +252,7 @@ private Player getRemovePlayer(Room room, String sessionId, UserPrincipal princi
262252
return removePlayer;
263253
}
264254

265-
private static String getDestination(Long roomId) {
266-
return "/sub/room/" + roomId;
267-
}
255+
268256

269257
private Player createPlayer(UserPrincipal principal) {
270258
return new Player(principal.getUserId(), principal.getUserNickname());
@@ -285,12 +273,12 @@ private boolean isLastPlayer(Room room, String sessionId) {
285273
return playerSessionMap.size() == 1 && playerSessionMap.containsKey(sessionId);
286274
}
287275

288-
private RoomExitData removeRoom(Room room, String destination) {
276+
private RoomExitData removeRoom(Room room) {
289277
Long roomId = room.getId();
290278
roomRepository.removeRoom(roomId);
291279
roomLocks.remove(roomId);
292280
log.info("{}번 방 삭제", roomId);
293-
return RoomExitData.builder().destination(destination).removedRoom(true).build();
281+
return RoomExitData.builder().removedRoom(true).build();
294282
}
295283

296284
private void changeHost(Room room, String hostSessionId) {
@@ -315,7 +303,7 @@ private void removePlayer(Room room, String sessionId, Player removePlayer) {
315303
room.removeSessionId(sessionId);
316304
}
317305

318-
private RoundResult buildResultOnlyChat(String destination, ChatMessage chatMessage) {
319-
return RoundResult.builder().destination(destination).chat(chatMessage).build();
306+
private RoundResult buildResultOnlyChat( ChatMessage chatMessage) {
307+
return RoundResult.builder().chat(chatMessage).build();
320308
}
321309
}

backend/src/main/java/io/f1/backend/domain/game/dto/GameStartData.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

backend/src/main/java/io/f1/backend/domain/game/dto/PlayerReadyData.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

backend/src/main/java/io/f1/backend/domain/game/dto/RoomExitData.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,15 @@
99
@Getter
1010
public class RoomExitData {
1111

12-
private final String destination;
1312
private final PlayerListResponse playerListResponses;
1413
private final SystemNoticeResponse systemNoticeResponse;
1514
private final boolean removedRoom;
1615

1716
@Builder
1817
public RoomExitData(
19-
String destination,
2018
PlayerListResponse playerListResponses,
2119
SystemNoticeResponse systemNoticeResponse,
2220
boolean removedRoom) {
23-
this.destination = destination;
2421
this.playerListResponses = playerListResponses;
2522
this.systemNoticeResponse = systemNoticeResponse;
2623
this.removedRoom = removedRoom;

backend/src/main/java/io/f1/backend/domain/game/dto/RoomInitialData.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import io.f1.backend.domain.game.dto.response.SystemNoticeResponse;
77

88
public record RoomInitialData(
9-
String destination,
109
RoomSettingResponse roomSettingResponse,
1110
GameSettingResponse gameSettingResponse,
1211
PlayerListResponse playerListResponse,

backend/src/main/java/io/f1/backend/domain/game/dto/RoundResult.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,17 @@
99

1010
@Getter
1111
public class RoundResult {
12-
String destination;
1312
QuestionResultResponse questionResult;
1413
RankUpdateResponse rankUpdate;
1514
SystemNoticeResponse systemNotice;
1615
ChatMessage chat;
1716

1817
@Builder
1918
public RoundResult(
20-
String destination,
2119
QuestionResultResponse questionResult,
2220
RankUpdateResponse rankUpdate,
2321
SystemNoticeResponse systemNotice,
2422
ChatMessage chat) {
25-
this.destination = destination;
2623
this.questionResult = questionResult;
2724
this.rankUpdate = rankUpdate;
2825
this.systemNotice = systemNotice;

backend/src/main/java/io/f1/backend/domain/game/websocket/GameSocketController.java

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,16 @@
33
import io.f1.backend.domain.game.app.GameService;
44
import io.f1.backend.domain.game.app.RoomService;
55
import io.f1.backend.domain.game.dto.ChatMessage;
6-
import io.f1.backend.domain.game.dto.GameStartData;
76
import io.f1.backend.domain.game.dto.MessageType;
8-
import io.f1.backend.domain.game.dto.PlayerReadyData;
97
import io.f1.backend.domain.game.dto.RoomExitData;
108
import io.f1.backend.domain.game.dto.RoomInitialData;
119
import io.f1.backend.domain.game.dto.RoundResult;
1210
import io.f1.backend.domain.game.dto.request.DefaultWebSocketRequest;
1311
import io.f1.backend.domain.game.dto.request.GameStartRequest;
12+
import io.f1.backend.domain.game.dto.response.GameStartResponse;
13+
import io.f1.backend.domain.game.dto.response.PlayerListResponse;
1414
import io.f1.backend.domain.user.dto.UserPrincipal;
15-
1615
import lombok.RequiredArgsConstructor;
17-
1816
import org.springframework.messaging.Message;
1917
import org.springframework.messaging.handler.annotation.DestinationVariable;
2018
import org.springframework.messaging.handler.annotation.MessageMapping;
@@ -38,17 +36,18 @@ public void initializeRoomSocket(@DestinationVariable Long roomId, Message<?> me
3836
UserPrincipal principal = getSessionUser(message);
3937

4038
RoomInitialData roomInitialData =
41-
roomService.initializeRoomSocket(roomId, websocketSessionId, principal);
42-
String destination = roomInitialData.destination();
39+
roomService.initializeRoomSocket(roomId, websocketSessionId, principal);
40+
41+
String destination = getDestination(roomId);
4342

4443
messageSender.send(
45-
destination, MessageType.ROOM_SETTING, roomInitialData.roomSettingResponse());
44+
destination, MessageType.ROOM_SETTING, roomInitialData.roomSettingResponse());
4645
messageSender.send(
47-
destination, MessageType.GAME_SETTING, roomInitialData.gameSettingResponse());
46+
destination, MessageType.GAME_SETTING, roomInitialData.gameSettingResponse());
4847
messageSender.send(
49-
destination, MessageType.PLAYER_LIST, roomInitialData.playerListResponse());
48+
destination, MessageType.PLAYER_LIST, roomInitialData.playerListResponse());
5049
messageSender.send(
51-
destination, MessageType.SYSTEM_NOTICE, roomInitialData.systemNoticeResponse());
50+
destination, MessageType.SYSTEM_NOTICE, roomInitialData.systemNoticeResponse());
5251
}
5352

5453
@MessageMapping("/room/exit/{roomId}")
@@ -59,57 +58,56 @@ public void exitRoom(@DestinationVariable Long roomId, Message<?> message) {
5958

6059
RoomExitData roomExitData = roomService.exitRoom(roomId, websocketSessionId, principal);
6160

62-
String destination = roomExitData.getDestination();
61+
String destination = getDestination(roomId);
6362

6463
if (!roomExitData.isRemovedRoom()) {
6564
messageSender.send(
66-
destination, MessageType.PLAYER_LIST, roomExitData.getPlayerListResponses());
65+
destination, MessageType.PLAYER_LIST, roomExitData.getPlayerListResponses());
6766
messageSender.send(
68-
destination, MessageType.SYSTEM_NOTICE, roomExitData.getSystemNoticeResponse());
67+
destination, MessageType.SYSTEM_NOTICE, roomExitData.getSystemNoticeResponse());
6968
}
7069
}
7170

7271
@MessageMapping("/room/start/{roomId}")
7372
public void gameStart(
74-
@DestinationVariable Long roomId,
75-
Message<DefaultWebSocketRequest<GameStartRequest>> message) {
73+
@DestinationVariable Long roomId,
74+
Message<DefaultWebSocketRequest<GameStartRequest>> message) {
7675

77-
GameStartData gameStartData =
78-
gameService.gameStart(roomId, message.getPayload().getMessage());
76+
GameStartResponse gameStartResponse = gameService.gameStart(roomId,
77+
message.getPayload().getMessage());
7978

80-
String destination = gameStartData.destination();
79+
String destination = getDestination(roomId);
8180

82-
messageSender.send(destination, MessageType.GAME_START, gameStartData.gameStartResponse());
81+
messageSender.send(destination, MessageType.GAME_START, gameStartResponse);
8382
}
8483

8584
@MessageMapping("room/chat/{roomId}")
8685
public void chat(
87-
@DestinationVariable Long roomId,
88-
Message<DefaultWebSocketRequest<ChatMessage>> message) {
86+
@DestinationVariable Long roomId,
87+
Message<DefaultWebSocketRequest<ChatMessage>> message) {
8988
RoundResult roundResult =
90-
roomService.chat(roomId, getSessionId(message), message.getPayload().getMessage());
89+
roomService.chat(roomId, getSessionId(message), message.getPayload().getMessage());
9190

92-
String destination = roundResult.getDestination();
91+
String destination = getDestination(roomId);
9392

9493
messageSender.send(destination, MessageType.CHAT, roundResult.getChat());
9594

9695
if (!roundResult.hasOnlyChat()) {
9796
messageSender.send(
98-
destination, MessageType.QUESTION_RESULT, roundResult.getQuestionResult());
97+
destination, MessageType.QUESTION_RESULT, roundResult.getQuestionResult());
9998
messageSender.send(destination, MessageType.RANK_UPDATE, roundResult.getRankUpdate());
10099
messageSender.send(
101-
destination, MessageType.SYSTEM_NOTICE, roundResult.getSystemNotice());
100+
destination, MessageType.SYSTEM_NOTICE, roundResult.getSystemNotice());
102101
}
103102
}
104103

105104
@MessageMapping("/room/ready/{roomId}")
106105
public void playerReady(@DestinationVariable Long roomId, Message<?> message) {
107106

108-
PlayerReadyData playerReadyData =
109-
roomService.handlePlayerReady(roomId, getSessionId(message));
107+
PlayerListResponse playerListResponse = roomService.handlePlayerReady(roomId, getSessionId(message));
110108

111109
messageSender.send(
112-
playerReadyData.destination(), MessageType.PLAYER_LIST, playerReadyData.response());
110+
getDestination(roomId), MessageType.PLAYER_LIST, playerListResponse);
113111
}
114112

115113
private static String getSessionId(Message<?> message) {
@@ -122,4 +120,8 @@ private static UserPrincipal getSessionUser(Message<?> message) {
122120
Authentication auth = (Authentication) accessor.getUser();
123121
return (UserPrincipal) auth.getPrincipal();
124122
}
123+
124+
private String getDestination(Long roomId) {
125+
return "/sub/room/" + roomId;
126+
}
125127
}

0 commit comments

Comments
 (0)