You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
블락 유저 처리
유저2 -> dm 보낸 유저가 블락이면 유저2가 socket.emit('leaveDmBlock') 즉시실행해서 방 나감. 나갈때 메시지로 원래 있던방에 "DM보낸 사람은 차단되었습니다"라고 던지고 방나오기. 유저1은 뻘쭘하게 혼자 방에 남아있겠지만, 평가때 자연스럽게 그 창 닫아서 나오게 만들기(socket.emit('leaveDm'))
*leaveDmBlock는 현재 없지만, 만들까 생각중입니다.
'directMessage'
유저2 -> dm 보낸 유저가 블락 아니면, 유저 1은 DM 보내고, socket.on('messageDm') 상태인 유저2는 알람 받게됌. 해당 채팅창이 클라이언트에 열려 있으면 알람표시는 안뜨고 채팅내용이 바로 디엠 채팅창 표시됌
leave(chatRoom) 경우 작동방식입니다.
클라이언트에서 받는 바디에 targetUserId 를 받게 돼요.
아래는 설명은 이런 구조 입니다.
"본인의 leave 요청 -> targetUser -> 행동"
owner -> owner -> 방삭제 및 다른 유저 방 나가짐
owner -> admin -> 강퇴 (바로는 안되고 클라이언트에서 백엔드로 admin을 일반유저로 만드는 api 호출 후 leave api 호출)
owner -> user -> 강퇴
admin -> owner -> 실패
admin -> 다른 admin -> 실패 (admin을 일반유저로 만들 수 없음)
admin -> admin(본인) -> admin 방나감
admin -> user -> 강퇴
user -> owner -> 실패
user -> admin -> 실패
user -> 다른 user -> 실패
user -> user(본인) -> user 방 나감
leaveDm은 dm 보낸 사람이 방을 나가면 방이 삭제 및 다른 유저 방 나가짐. dm 받은 사람이 나가면 dm 보낸 사람은 혼자 방에 남게 됌.
클라이언트에서 서버로 'leaveDM' socket 요청 시나리오
유저1 -> socket.emit('createChatRoomDM) -> (서버) join(user1), join(user2)
유저2 -> socket.on('join') -> 유저1이 블락유저인지 아닌지 확인(API)
블락 유저 처리
유저2 -> dm 보낸 유저가 블락이면 유저2가 socket.emit('leaveDmBlock') 즉시실행해서 방 나감. 나갈때 메시지로 원래 있던방에 "DM보낸 사람은 차단되었습니다"라고 던지고 방나오기. 유저1은 뻘쭘하게 혼자 방에 남아있겠지만, 평가때 자연스럽게 그 창 닫아서 나오게 만들기(socket.emit('leaveDm'))
*leaveDmBlock는 현재 없지만, 만들까 생각중입니다.
'directMessage'
유저2 -> dm 보낸 유저가 블락 아니면, 유저 1은 DM 보내고, socket.on('messageDm') 상태인 유저2는 알람 받게됌. 해당 채팅창이 클라이언트에 열려 있으면 알람표시는 안뜨고 채팅내용이 바로 디엠 채팅창 표시됌
이런 방향 어떨까요 ?