WebSocket 실시간 메시지 전송·읽음 처리·메시지 히스토리 페이징으로 채팅 구현 결
채팅 기능 개발에서 처음 구현한 것은 실시간 메시지 전송이었습니다. WebSocket 연결을 유지하면서 클라이언트가 메시지를 보내면 서버가 같은 방의 모든 연결에 즉시 브로드캐스트하는 구조를 만들었습니다.
읽음 처리도 사용자 경험에 중요한 기능이었습니다. 상대방이 메시지를 읽은 시점을 표시하려면 클라이언트가 메시지를 화면에 표시하는 시점을 서버에 알리는 구조가 필요했고, 배치 처리로 불필요한 DB 쓰기를 줄이는 방식을 적용했습니다.
메시지 히스토리 조회에서는 커서 기반 페이징을 사용했습니다. 일반 오프셋 페이징은 데이터가 많을수록 성능이 떨어지는데, 마지막 메시지 ID를 기준으로 이전 데이터를 가져오는 방식으로 대화 이력이 많아도 일정한 응답 속도를 유지했습니다.