websocket을 이용한 채팅서버개발 고생기(2)

sunn_ni·2024년 9월 24일
0

트러블슈팅

목록 보기
1/7

websocket을 이용한 채팅서버개발 고생기(1)
1편에 이어 .. 마저 작성

3. 읽음처리하기

.
상대방 읽음처리가 가장 어려운 난제중에 하나였다.
이 부분에서 정말 많이 헤맸는데 우선 헤맸던 포인트가 있다.

  1. 앱이라면 괜찮지만 웹은 유저가 이 방에서 나가도 프론트에서 정확하게 트래킹이 어려웠다.
  2. 그렇다보니 해당 채팅방에서 나가서 다른 채팅방에 갔는데, socket을 쏘니 방 a의 채팅에 방 b에서의 채팅이 가기시작하고, 혹은 a를 읽었는데 b방의 채팅을 읽음이 전송되었다.

이러한 이슈들로 인해 앞선 고생기(1)에서의 2번(전면 구조변경) 을 채택하고,
socket의 room에 저장하는 방식들을 전면 수정을 했다.

  1. 상대방이 A방에 채팅을 보낸다. 그러면 A방의 다른유저에게 new채팅에 대한 socket을 보내게 된다.
  2. A방에 내가 있다면(채팅창에 활성화 상태라면) 이때 내가 해당 채팅방에서 읽었음에 대한 정보를 서버로 보내게끔 했다.
  3. 이렇게 "나 읽음" 이라는 socket을 수신받는다면 서버에서는 내가 아닌 상대방이 보낸 메세지를 모두 읽음처리하고, A방에 읽음처리가 완료되었음을 내가아닌 다른사람에게보내, 상대방이 내 채팅을 읽었음을 알 수 있게 한다.
  4. 내가 해당 파티채팅을 리로딩할때도 마찬가지로 읽음처리 루틴을 실행시킨다.

이 외에도,

최대한 서로 다른방의 간섭을 막아주기 위해, 채팅방에서 나와 목록으로 들어갈때 모든 방에서 leave를 했고, 새로운 채팅방에 접속할때 또한 그 방을 제외한 나머지 방에서 leave하도록 하는 등의 다양한 방법을 써서 구현을 했다.

profile
방황중인 서버개발자

0개의 댓글

관련 채용 정보