안녕하세요.
회사에서 게임 내부와 소통할 수 있는, 메신저어플을 만드는중입니다.
기획 당시에는
1. 어플에서 로그인 -> 초기데이터를 전달받음 (친구 정보, 로그인정보)
2. 메세지 쓰기 친구초대 등은 서버에 request -> 관련 정보 response
3. 친구정보가 변경된다던가 메세지가 오는것은 무조건 GCM으로 푸시함.
이렇게 기획을 잡고 시작했습니다.
그런데 갑자기 서버개발자가 의문을 던지더군요. "GCM 손실율이 있지않아?"
검색해보니 "손실될 가능성을 염두해둬야한다" 라고 하더군요. 손실 가능성은 충분히 있고,
GCM의 경우 실제로도 20%정도의 정보가 손실된다고 하네요.
그래서 그럼 폴링 방식으로 진행하자는 얘기가 됐습니다.
그런데 서버쪽에서 골치아프다며 폴링 말고 다른방식이 없을까하면서 검색좀 해보랍니다.. ㅠ (클라지만,, 전 신입이기에..)
또 검색하다보니, 실제 어플이 켜졌을때랑, 백그라운드에 있을때랑 처리하는 방식을 달리하는 방법도 있더군요.
실제 어플이 켜져있을 때:
1. 소켓 연결로 바이너리 통신
2. 폴링하다가 정보 전달 후, 바로 다시 폴링
백그라운드에 있을 때:
1. GCM을 이용한 메세지가 왔다는 정보 전달 (실제로 어플을 켰을 때, 대화 정보를 가져옴. 그전엔 알림기능일뿐)
2. 10초, 20초 등 시간 단위를 두고 폴링
이런 방법들이 있다는 정도만 알게됐습니다. 2-2 (실제어플-백그라운드) 의 조합이 예전 카카오톡이였다나? 그랬던거같은데.. 흠..
뭐가 효율적인지 모르겠네요..
혹시 다른 방식이 있다면 알려주실 수 있을까요?