Skip to content

[BE] chatRoom, chatRoomDm 'leave, leaveDm' 작동방식 #69

@toy-k

Description

@toy-k
  • 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. 유저1 -> socket.emit('createChatRoomDM) -> (서버) join(user1), join(user2)
    유저2 -> socket.on('join') -> 유저1이 블락유저인지 아닌지 확인(API)

  2. 블락 유저 처리
    유저2 -> dm 보낸 유저가 블락이면 유저2가 socket.emit('leaveDmBlock') 즉시실행해서 방 나감. 나갈때 메시지로 원래 있던방에 "DM보낸 사람은 차단되었습니다"라고 던지고 방나오기. 유저1은 뻘쭘하게 혼자 방에 남아있겠지만, 평가때 자연스럽게 그 창 닫아서 나오게 만들기(socket.emit('leaveDm'))
    *leaveDmBlock는 현재 없지만, 만들까 생각중입니다.

  3. 'directMessage'
    유저2 -> dm 보낸 유저가 블락 아니면, 유저 1은 DM 보내고, socket.on('messageDm') 상태인 유저2는 알람 받게됌. 해당 채팅창이 클라이언트에 열려 있으면 알람표시는 안뜨고 채팅내용이 바로 디엠 채팅창 표시됌

이런 방향 어떨까요 ?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Status

공유 정보 및 의견 교류

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions