알파피플 앱

📢 채팅 phoenix socket protocol v0.9



https://demo.alphapeople.me/ (ID: alphapeople / PW: corki)

일단 위 화면 정도를 만들어서 검증해봤습니다. GraphQL 은 schema 파일을 읽으시면 되는데,
phoenix socket 은 그런 규격이 없어서 여기에 정리합니다.

Chrome inspector 를 캡쳐했습니다.
아래에서 2번은 channel 이름, 3번은 event이름, 4번이 payload 입니다.


# 조인할 채널

user:<user_id> 로 join.
user_id 는 로그인때도 반환되고, 다시 받으려면 GraphQL getMe 로 받을수 있습니다.


# chat_created (새로운 채팅 생성됨)



# chat_msg_created (새로운 메시지 생성됨)



# chat_unread_msg_count_updated (채팅방 안 읽은 메시지 갯수 업데이트) 




# user_unread_msg_count_updated (전체 안 읽은 메시지 갯수 업데이트)

김기범, Flutter at Alphapeople 👍

Comments & Events

이재철, Backend at Alphapeople
김기범, Flutter at Alphapeople 김기범 첫 메시지를 보낼때는 아직 채팅방이 있기 전인데, 그렇다고 메시지 보내기 전에 채팅방을 먼저 만들면 메시지를 안 보내고 뒤로 가기 할 경우 빈 채팅방이 발생합니다.

카톡을 보면 대화가 없던 친구를 선택해서 채팅창을 만들었다가, 아무 말도 안하고 빠져 나가면 대화가 생성되지는 않더라구요? 아마도 첫 메시지를 보내는 시점에 채팅이 생성되는것 같습니다.

저희도 그런식으로 해야 할것 같습니다. 구체화되면 공유할께요. 채팅 너무 복잡하네요.
김기범, Flutter at Alphapeople
넵! 참고로 현재 앱 쪽 로직은 소켓 채널 연결이 완료되어야 첫 메시지를 보낼 수 있도록 되어 있습니다. 

닭이 먼저냐 달걀이 먼저냐이긴 한데, 말씀 주신 방향으로 구현되면 소켓 연결과 관계 없이 바로 보낼 수 있을 듯 합니다. 
이재철, Backend at Alphapeople
김기범, Flutter at Alphapeople 김기범

첫 채팅 메시지를 보낼때는 채팅방이 아직 생성되기 전이라  createMsg 를 쓸수 없고,
createChatWithFirstMsg 를 쓰시면 됩니다.
리턴되는 값에 생성된 originChatId 를 가지고 createMsg 를 쓰면 됩니다.

(카카오톡 등이 첫 메시지를 보내야 채팅방이 생기도록 되어 있어서 똑같이 되도록 변경했습니다.)

김기범, Flutter at Alphapeople 👍
이재철, Backend at Alphapeople
김기범, Flutter at Alphapeople 김기범  

FCM 으로 푸시가 가는 경우에, 현재 앱을 열고 있으면 푸시를 안 받도록 하는건 앱에서 제어할수 있는건가요?
김기범, Flutter at Alphapeople
이재철, Backend at Alphapeople 이재철

네 앱이 포그라운드에 있을 때 푸시알림 노출 여부는 클라이언트에서 설정 가능합니다. (디폴트는 미노출)
이재철, Backend at Alphapeople 👍