본문 바로가기
개발 기초 다지기

소켓 1:1 채팅 기능(구현했던 알림 기능과 다른점은?)

by 너의고래 2024. 7. 29.

이전 팀프로젝트에서 socket.io를 통해 서비스 알림 기능을 구현했다. 이번 최종프로젝트에서는 운좋게 socket.io를 통해 1:1 채팅을 구현할 수 있게 됐다. 그래서 오늘 해당 기능을 위해 약간의 공부와 기본 구성을 만들었다. 비슷한듯하면서도 응용이 필요한 1:1 채팅기능을 정리해보겠다.

 

 

알림 기능과 1:1 채팅의 차이점은 무엇이 될까?

데이터 구조 및 저장

  • 알림: 보통 단방향 데이터 흐름으로, 서버에서 클라이언트로 짧은 메시지 전송.
  • 채팅: 양방향 데이터 흐름으로, 메시지의 송수신이 빈번하며, 메시지 기록을 저장하고 조회할 필요가 있음.

실시간 통신

  • 알림: 특정 이벤트 발생 시 알림을 푸시.
  • 채팅: 지속적인 연결을 유지하며, 메시지 송수신을 실시간으로 처리.

유저 인터페이스

  • 알림: 간단한 UI로 알림 리스트를 표시.
  • 채팅: 대화 UI가 필요하며, 메시지 입력, 전송, 표시 등의 기능이 요구됨.

기능성

  • 알림: 보통 수신 확인, 읽음 상태 확인 등이 필요하지 않음.
  • 채팅: 메시지 읽음 확인, 타이핑 상태 표시, 메시지 전송 상태(전송 중, 전송 완료, 전송 실패) 등을 구현해야 할 수 있음.

 

구현 시 고려 사항

그렇다면 이 차이점을 가지고 고려해야할 부분은 어떤 부분이 있을까?

웹소켓 설정

  • 알림과 동일하게 NestJS의 WebSocket 모듈을 사용하여 실시간 통신을 설정할 수 있음.
  • 1:1 채팅에서는 각 유저를 특정 방(room)으로 분리하여 관리할 수 있음.

메시지 저장

  • 채팅 메시지를 데이터베이스에 저장해야 함.
  • 메시지의 송수신 시간을 기록하고, 대화 상대와 메시지 내용 등을 저장.

인증 및 권한 관리

  • 각 채팅 메시지의 송수신자가 인증된 유저인지 확인.
  • 각 유저가 본인의 채팅 내역에만 접근할 수 있도록 권한을 설정.

채팅 방 관리

  • 각 유저 쌍에 대해 고유의 채팅 방을 생성하고 관리.
  • 채팅 방 리스트를 관리하고, 필요한 경우 채팅 방을 삭제.

 

이러한 고려사항을 바탕으로 해당 기능을 구현해나갈 예정이다. 이미 어느정도의 틀은 잡아놓긴했지만 실제로 잘 구동할지는 내일 테스트해봐야할 것 같다. socket.io에 대해 더 자세히 알아갈 수 있는 좋은 기회를 갖게 되어 기쁘다.

'개발 기초 다지기' 카테고리의 다른 글

socket io 1:1 채팅 구현 (2)jwt 토큰 전달  (0) 2024.08.02
socket io 1:1 채팅 구현 (1)채팅방 DB 저장  (1) 2024.08.01
Linux 명령어 정리  (1) 2024.07.24
DB 분할?  (0) 2024.07.22
distinctAlias 문제 (쿼리 빌더)  (0) 2024.07.22

댓글