마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

GCM 관련 질문입니다.

0 추천
구글링 하다보니 gcm이 유실율이 꽤 된다는 말을 들었습니다.

그래서 직접 웹서버 간단히 구축하고 서로 통신을 해 봤는데 딱히 패킷이 유실되진 않는거 같더라구요?

조금더 발품 팔아서 여기저기 물어보니 유실율이나 시퀀스가 뒤바뀌는 등의 경우는 상당히 드물다고 하던데.. 그럼 재전송 매커니즘을 어떻게 해야할지 애매해서 질문드립니다.

일단 gcmserver 라이브러리에서는 gcm서버로 패킷을 전송할때 마지막 인자로 재전송 횟수를 받는걸로 알고 있습니다.

MulticastResult result = sender.send(builder.build(), members, 10); 이런식으로요.

제생각에 이 횟수를 무한정 늘려버리면 거의 100% reliable하게 전송이 될거같은데 대부분 5~10정도를 인자로 넣더군요. 혹시 인자값을 크게 넣으면 안되는 이유가 있는지 궁금합니다.

만약 모종의 이유가 있다면 따로 서버나 클라이언트쪽에 재전송 메커니즘을 설정하는게 맞는건지.... 가르쳐주시면 감사하겠습니다...

그리고 가장 아리송한게.. 저 메소드의 리턴값(MulticastResult)가 클라이언트에게 정상적으로 패킷이 도착하지 않았을때 에러코드를 리턴해주는건지.... 아니면 클라이언트에게 패킷이 제대로 도착했는지 여부와는 관련없이 웹서버가 GCM서버로 보낸 패킷이 유실됐을때만 에러를 리턴하는건지... 그부분도 영 감이 잡히질 않네요..

안드로이드로 클라이언트-서버 프로젝트를 해본 적도 없고... 아직 학부생이라 프로젝트 경험도 거의 없다보니 헷갈리는 부분이 많네요 ㅎㅎ..
익명사용자 님이 2015년 10월 9일 질문
2015년 10월 9일 수정

2개의 답변

0 추천

음.. 저도 요즘 Android notification에 대해서 알아보고 있습니다.

 

우선, (제 생각이지만)재전송 횟수를 늘리게되면 부하같은 현상이 생기지 않을까 생각합니다.

 

client수가 적다면야 상관이 없겠지만, 수많은 client가 재전송 횟수만큼 packet을 막 날리면 Server쪽에서는 처리하기 힘들지 않을까요?

 

한때, 어느 모바일 메신저 회사에서도 트래픽 과부하로 서버에 문제가 발생했던 적이 있다고 합니다.

참고: http://www.mobizen.pe.kr/1074

nkSong (1,000 포인트) 님이 2015년 10월 22일 답변
0 추천
20을 넣은적이 있는데요

 

보내지다 말아버리드라구요

 

요청할수 있는(일정시간내에) 횟수가 정해져있는듯
익명사용자 님이 2015년 10월 23일 답변
...