diff --git a/src/main/java/io/oeid/mogakgo/domain/achievement/application/AchievementSocketService.java b/src/main/java/io/oeid/mogakgo/domain/achievement/application/AchievementSocketService.java index a2bed551..21db445e 100644 --- a/src/main/java/io/oeid/mogakgo/domain/achievement/application/AchievementSocketService.java +++ b/src/main/java/io/oeid/mogakgo/domain/achievement/application/AchievementSocketService.java @@ -7,6 +7,8 @@ import io.oeid.mogakgo.domain.achievement.domain.entity.AchievementMessage; import io.oeid.mogakgo.domain.achievement.exception.AchievementException; import io.oeid.mogakgo.domain.achievement.infrastructure.session.AchievementSessionRepository; +import io.oeid.mogakgo.domain.user.application.UserCommonService; +import io.oeid.mogakgo.domain.user.domain.User; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; @@ -20,6 +22,7 @@ public class AchievementSocketService { private final ObjectMapper objectMapper; + private final UserCommonService userCommonService; private final AchievementSessionRepository achievementSessionRepository; public void addSession(Long userId, WebSocketSession session) { @@ -48,4 +51,8 @@ public void sendMessageAboutAchievmentCompletion(Long userId, AchievementMessage } } } + + public User validateUser(Long userId) { + return userCommonService.getUserById(userId); + } } diff --git a/src/main/java/io/oeid/mogakgo/domain/achievement/handler/AchievementSocketHandler.java b/src/main/java/io/oeid/mogakgo/domain/achievement/handler/AchievementSocketHandler.java index 0c5f8c1c..3a91f882 100644 --- a/src/main/java/io/oeid/mogakgo/domain/achievement/handler/AchievementSocketHandler.java +++ b/src/main/java/io/oeid/mogakgo/domain/achievement/handler/AchievementSocketHandler.java @@ -2,13 +2,14 @@ import static io.oeid.mogakgo.exception.code.ErrorCode500.ACHIEVEMENT_WEB_SOCKET_ERROR; +import com.fasterxml.jackson.databind.ObjectMapper; import io.oeid.mogakgo.domain.achievement.application.AchievementSocketService; import io.oeid.mogakgo.domain.achievement.exception.AchievementException; -import java.util.Map; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.socket.CloseStatus; +import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.TextWebSocketHandler; @@ -18,19 +19,21 @@ @RequiredArgsConstructor public class AchievementSocketHandler extends TextWebSocketHandler { + private final ObjectMapper objectMapper; private final AchievementSocketService achievementSocketService; @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { - Map attributes = session.getAttributes(); - Long userId = (Long) attributes.get("userId"); - achievementSocketService.addSession(userId, session); log.info("afterConnectionEstablished: {}", session.getId()); } @Override - public void handleMessage(WebSocketSession session, WebSocketMessage message) { - throw new UnsupportedOperationException(); + public void handleMessage(WebSocketSession session, WebSocketMessage message) throws Exception { + TextMessage textMessage = (TextMessage) message; + String payload = textMessage.getPayload(); + Long userId = objectMapper.readValue(payload, Long.class); + achievementSocketService.validateUser(userId); + achievementSocketService.addSession(userId, session); } @Override