Wordle Maker Project Spring 7일차

PROLCY·2023년 1월 31일
0

오늘은 1월 31일 7일차이다.

목표

  • Service 구성(4)
  • Controller 구성(4)

진행

일단은 모든 요청에 대해서 구현은 다 마무리했고, 이제 남은 것은 웹소켓뿐이다. 아직 코드 정리가 안 되어서 8일차에 오늘 했던 코드를 올려야 될 것 같다.

어제 발생했던 keyState가 DB에 저장이 안되는 문제를 오늘 해결했다. 분명히 쿼리도 제대로 다 나가고 있었는데 왜 안될까 여러 번 실행해보며 로그를 읽어봤는데, 원인은 요청에 있었다.
기존의 클라이언트에서는 문자를 입력하는 순간 solve/{makerNickname}/typing 요청을 보내고, 엔터를 입력하는 순간 solve/{makerNickname}/enter 요청을 보낸다. 이때 로직상 엔터를 입력하는 순간에도 typing 요청이 보내지고 있었고, /enter 요청으로 인해 저장하기 직전에 /typing 요청으로 인한 쿼리와 저장이 일어나서 keyState가 저장이 안 되는 것이었다. 어쩐지 한 번씩 저장될 때도 있었는데, 요청이 오는 시간, 처리하는 시간에 영향을 받은 것 같다.

순서를 정리하자면,
1. 엔터키를 누른다.
2. 클라이언트에서 /enter 요청을 보낸다.
3. 클라이언트에서 /typing 요청을 보낸다.
4. /enter 요청에서 받은 keyState를 저장하기 위해, 해당하는 solver 객체를 select 한다.
5. /typing 요청에서 받은 newWord를 wordList에 추가하기 위해, 해당하는 solver 객체를 select한다.
6. /enter 요청으로 인한 update 쿼리를 실행한다.(keyState 정상 저장)
7. /typing 요청으로 인한 update 쿼리를 실행한다.(이때 문제 발생, 저장할 때 keyState 속성은 5번에서 select한 것으로, 아직 keyState를 저장하기(6번) 전이기 때문에 null 값이 들어가 있다. 그래서 keyState에는 다시 null 값 저장)

해결방안으로는 /enter 요청을 없애고, /typing 요청 시 keyState도 요청으로 같이 보내서 DB에 저장하도록 하였다.

내일 할 것

  • 코드 정리
  • 웹소켓 공부 및 추가

마무리

오늘 맡은 메소드는 3개 정도 밖에 없었는데, 시간은 많이 걸렸던 것 같다. 요청으로 온 JSON을 파싱하고 적절히 처리하는 로직을 짜느라 시간이 많이 소모되었다. 웹소켓도 빠르게 적응하여 10일차 안으로 이 프로젝트를 마무리해보겠다.

0개의 댓글