Skip to content

✨ feat: 채팅 가시성 관련 웹 소켓 연결 관리 #402

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

jungmyunggi
Copy link
Collaborator

🔨 테스크

Issue

웹 가시성에 따른 웹 소켓 해제 및 재연결

  • 크롬 브라우저의 discard 메모리 최적화 정책을 최대한 활용해보기 위해서 도입했습니다.
  • 크롬 브라우저의 경우 웹 소켓이 연결된 탭의 경우 백그라운드에 있더라도 메모리를 계속해서 점유하도록 되어있습니다.
  • 위 불필요한 메모리 점유를 막고자 웹 가시성API를 이용해 서비스가 백그라운드로 들어가게 되면 일정 시간이 지난 후 웹 소켓을 끊어버리는 식으로 수정했습니다.

채팅 낙관적 업데이트 및 채팅 개별 재전송

  • 이전에 구현된 방식은 사용자가 채팅을 서버로 보내면 서버는 웹 소켓에 브로드캐스팅 방식을 이용해 해당 채팅을 뿌렸습니다.
  • 이때 사용자가 연결이 불안정한 상태에서 채팅을 보내게 된다면 해당 브로드캐스팅을 받을 수 없게 되며 이에 따른 문제가 발생합니다.
  • 위 문제를 해결하고자 채팅 낙관적 업데이트를 도입했고 서버로부터 해당 채팅에 대한 ack을 받아 업데이트 하는 식으로 수정했습니다.

본인 채팅 오른쪽에 나오도록 수정

  • 말 그대로 본인이 보낸 채팅과 다른 유저가 보낸 채팅을 구분하기 위해 도입했습니다.

📋 작업 내용

  • 웹 가시성에 따른 웹 소켓 해제 및 재연결
  • 채팅 낙관적 업데이트
  • 본인 채팅 오른쪽에 나오도록 수정

📷 스크린 샷(선택 사항)

image

image

@jungmyunggi jungmyunggi requested a review from junyeokk May 28, 2025 15:43
@jungmyunggi jungmyunggi self-assigned this May 28, 2025
@jungmyunggi jungmyunggi added the ✨ Feature 기능 구현 label May 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ Feature 기능 구현
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FE] 채팅 재전송 및 재연결 로직 구현
1 participant