📢 채팅 뼈대 완료...
팬/셀럽 모두 사용 가능하고, 알파챗/DM 모두 사용 가능하도록 만들었습니다.
fan@gmail.com 유저로 로그인 하면, 10명과 DM 중이고, 10명과 알파챗 중인걸로 셋업해놨습니다.
<구현 안된 기능>
- 메시지 알림
- 메시지를 받아도 phoenix socket 으로 알려주지 않습니다.
- 멤버십
- 멤버십에 따른 권한 체크가 없습니다.
- 보이스
- 텍스트만 가능합니다.
----------------------------------------------------------------------------
클라이언트에서 굳이 알 필요는 없지만, 같은 방을 입장해도 celeb 과 fan 은 chat_id 가 다릅니다. 실제로는 서로 다른 방에 입장해 있는 것이고, 한쪽의 메시지를 다른쪽에 전달하는 식으로 구현되어 있습니다.
이렇게 하는 이유는 카톡 그룹채팅과 알파챗에 들어와 있더라도
- 팬끼리는 서로 메시지를 보면 안되고, 셀럽은 모든 메시지를 보기 때문에
- 사실상 1개의 방이 아니라, 셀럽, 팬 모두 각자 자기만의 방에 들어가 있고, 메시지가 방마다 복사되는 형식입니다.
이 구조 때문에 3번 갈아 엎었네요..
작업 공유주셔서 감사합니다!
채팅 관련하여 몇 가지 궁금한 점 문의드립니다:
1. 메시지 읽음 처리를 할 수 있는 스키마 타입이 혹시 있을까요?
(ex. UpdateChatMsgInput)
2. 비 텍스트 메시지(ex. 이미지, 비디오)는 Msg의 content 필드에 다운로드 URL을 넣어서 구현하려는데, 의도하신 방식이 맞을까요?
3. 메시지를 전송(Create) 했을 때, Phoenix Socket으로 전송되고 푸시 알림이 가는 기능은 추후 구현 예정일까요?
2. 아뇨, createFileFromUploadUrl 로 일단 File 개체를 먼저 만들고, 그 id 를 여기서 받도록 할 예정입니다.
3. 당연히 해야죠.
가장 중요한 DB 구조부터 잡은거라 이제 살을 붙여 나갈 예정입니다. 구현되는대로 공유 드릴께요. 일단은 현재 채팅 목록과, 메시지 목록부터 앱에 연동해 보세요. 그리고 텍스트 입력도... 그 사이에 제가 구현을 할께요.