채팅방 소켓 작동 방식 정리, 소켓 명세 #133
Replies: 2 comments
-
[kyu-baek] channel_id 를 확인해서 지금 상세 채팅방이 해당 채팅방인지 확인 ban 과 unban, 이 두가지는 end_at 이 포함되어 있는지 아닌지에 따라 구별하시는 게 좋을 것 같습니다. mute 를 시킬 때, ban 을 시킬 때는 반환값에 end_at 이 포함되지만, 해제할 때는 포함되지 않습니다. 그래서 굳이 따로 type 을 지정해서, .emit('ban', { type:'ban or unban' -> 이런식으로 구분할 필요는 없을 것 같습니다. |
Beta Was this translation helpful? Give feedback.
-
chat_active 에서 다음과 같은 이벤트가 추가됩니다. interface UserUpdateDto {
user_id: number;
nickname: string;
profile_url: string;
status: UserStatusEnum; //(0 ONLINE, 1 OFFLINE)
} chat 에서 user 상태 변경이 되었을 때 notifier 를 통해서 알람이 갑니다. |
Beta Was this translation helpful? Give feedback.
-
로직상 문제되어보이는 부분이 있다면 댓글로 수정요청 해주세요
현재 문제점 : 모든 채팅방에 chat_active_${channel_id} 룸에 join 되어있고, 채팅방 상세 컴포넌트에 접근했을때 필요한 이벤트만 listen.
=> 채팅방 상세 URL에 있는경우 다른 채팅방에서 발생한 이벤트까지 listen되어 이벤트 메시지에 channel_id 를 포함시켜서 처리함
=> 쓸모없는 메시지가 많이 들어옴
기능
채팅방 외부
채팅 리스트
opt
채팅방 내부
전체 로직
1️⃣ 로그인 시 로그인 유저가 join된 모든 방의
chat_alarm_${channel_id}
룸에 join=> 시점 : 소켓을 connect 했을때 백엔드에서 모든 채팅방에 join
alarm 은 사용자가 어떤 경로에 있는지 상관없이 받아야하는 데이터들이 전달됨
⭕ 필수 listen 이벤트 (backend에서 emit)
당사자에게
알람
을 주는 이벤트. 채팅방리스트를 보고있다면채팅방 리스트 변경
내 채팅방 리스트에 추가
+알람
을 위해 발생내 채팅방 리스트에서 제거
+알람
내 채팅방 리스트에서 제거
+알람
opt
메시지내용을 알람으로 표시하는 기능은 닉네임, 내용, 채팅방 이름 까지 가져와야 하기때문에 보류.2️⃣ 채팅방 리스트에서 채팅방 상태가 변경되면 리스트에 적용
API CALL: 내 채널리스트 컴포넌트에서 api 요청해서 업데이트.
특정 채팅방 정보가 변경되는건 적용하지 않아도 초대나 밴같은 리스트 변경은 적용시켜줘야함
⭕ 필수 listen 이벤트
이미 1️⃣ 에 구현된 이벤트들 (초대, 밴, 킥, 챗)을 사용해서 내 채팅방리스트에서 제거하거나 카운트 증가
❌ 옵션 listen 이벤트
3️⃣ 채팅방 상세에 접근했을때
chat_active_${channel_id}
룸에 join=> 시점 : 프론트에서 채팅방 상세에 접근해서 enter-chat 이벤트 호출
=> API CALL : 채팅방 users, message log, mutelist, (관리자: banlist)
채팅방 안에서 확인해야하는 데이터를 내가 실제로 보고있을때만 받기 위해 상세에 접근할때만 chat_active 에 join 시킴
⭕ 필수 emit 이벤트 (backend의 decorator)
⭕ 필수 listen 이벤트
채팅방의 전체 유저가 동일하게 유저의 상태를 관리하기 위함.
4️⃣ 채팅방을 닫을때
chat_active_${channel_id}
룸에서 leave=> 시점 : 채널아이디 변경, 컴포넌트 언마운트 시 leave-chat 이벤트 호출
⭕ 필수 emit 이벤트 (backend의 decorator)
5️⃣ 채팅방에서 나갈때
chat_alarm_${channel_id}
룸에서 leave=> 시점 : 채널에서 나갈때 백엔드에서 처리
Beta Was this translation helpful? Give feedback.
All reactions