2022.01.18 TIL
반응형

오늘한 것

  • 채팅 방 안 읽은 메세지 DB 수정으로 오류 해결
  • 프론트 배포 디테일 체크

 

느낀점

기존 채팅 구현의 안 읽은 메세지 로직의 경우 redis를 이용해 사용자의 마지막으로 읽은 메세지 수를 체크하여 총 메세지 수와의 차를 이용해서 구하였다. 하지만 테스트 과정에서 redisRepository의 값이 종종 날아가 버그가 발생하는 것을 확인하였고, 해당 문제를 해결하고자 채팅방에 참여한 유저 정보 테이블에 마지막으로 읽은 메세지 수 컬럼을 하나 추가하여 채팅 웹 소켓이 disconnect 될 때 해당 컬럼을 업데이트 시켜주는 식으로 구현하려고 했다. 하지만 이 또한 생각하지 못했던 문제가 발생하였다. disconnect하면서 db를 업데이트 하는 처리보다 채팅방을 나간 후 목록에서 안 읽은 메세지를 조회하는 처리가 종종 더 빨라 업데이트 되지 않은 값이 내려가는 문제가 발생하였고 우리는 로직을 다시 생각해봤다. 결론적은로 적용한 방식은 메세지 1개에 isRead 컬럼을 주어 상대방이 해당 메세지를 읽었는지 안 읽었는지 true, false로 판단하도록 하고 false 개수만 반환하도록 구현하였다. 채팅방에 모든 메세지 목록을 불러올 때, 상대방이 보낸 메세지의 isRead값을 false->true로 해주었고 또 두 명이서 웹소켓으로 끊기지 않고 대화할 때 상대방이 채팅방에 접속한 상태인지 아닌지를 판단하여 상대방이 접속했다면 true로 설정해주는 로직을 추가하였고 테스트 결과 잘 동작하는 것을 확인했다. 

redis에 대해 아직 잘 모르고 썼기에 이러한 시행착오를 겪었다. 모르는 것이 너무 많기에 어떤 방식을 써야 할 지 판단이 잘 안 설 때가 많은 것 같다. 앞으로 꾸준히 공부하고 꾸준히 노력하기..

반응형

'회고' 카테고리의 다른 글

2022.01.20 TIL  (0) 2022.01.21
2022.01.19 TIL  (0) 2022.01.19
2022.01.17 TIL  (0) 2022.01.18
22.01.10 ~ 15일 WIL  (0) 2022.01.16
2022.01.15 TIL  (0) 2022.01.16