구글의 C2DM의 원리가 궁금합니다.
디바이스의 각각 ip를 파악하고 있다가 메시지를 보내주는건가요?
해당앱이 꺼져있는 상태에서도 메시지를 받을 수 있는 시스템인데 원리가 궁금합니다.
독자적인 push서버를 제작하려면 어떠한 방법이 가장 좋은지도 아시는분이 계시면 답변부탁드립니다.
XQTT나 이런것도 보긴했는데 실제로 규모가 커졌을때 쓰기 적합한지 그냥 C2DM을 쓰는것이 좋은지도 궁금하구요.
요새 아이폰/안드로이드에서 사용하는 푸쉬의 기본적인 원리만 간략히 적으면,
1. 폰에서 일정시간 주기로 timeout이 긴 (수분에서 수십분 사이) 요청을 서버로 보냅니다. (keep alive, long polling, heartbeat 등으로 불립니다.)
2. 서버 측에서 그 폰으로 보낼 메시지가 발생하는 경우 (앱서버에서 메시지 서버로 메시지를 전송한 경우) 메시지를 요청에 응답하여 보내줍니다.
3. 설정된 타임아웃 시간 내에 메시지가 없는 경우에는 폰에서 연결이 타임아웃되고 재요청을 보내서 새로운 연결을 만들어 반복합니다.
4. 폰의 데이터 연결 상태가 변경될 경우에도 새로운 요청을 보내서 새연결을 만듭니다.
따라서 앱별로 독자적인 push를 설계해 사용하는 경우 통신량 및 배터리 소모가 늘어나는 점이 문제입니다.
사용자의 입장에서는 OS에서 제공하는 push 서비스(C2DM)을 이용해서 전력을 절약해 주는 것이 좋습니다.
답변 감사합니다.
로그인 유지
요새 아이폰/안드로이드에서 사용하는 푸쉬의 기본적인 원리만 간략히 적으면,
1. 폰에서 일정시간 주기로 timeout이 긴 (수분에서 수십분 사이) 요청을 서버로 보냅니다. (keep alive, long polling, heartbeat 등으로 불립니다.)
2. 서버 측에서 그 폰으로 보낼 메시지가 발생하는 경우 (앱서버에서 메시지 서버로 메시지를 전송한 경우) 메시지를 요청에 응답하여 보내줍니다.
3. 설정된 타임아웃 시간 내에 메시지가 없는 경우에는 폰에서 연결이 타임아웃되고 재요청을 보내서 새로운 연결을 만들어 반복합니다.
4. 폰의 데이터 연결 상태가 변경될 경우에도 새로운 요청을 보내서 새연결을 만듭니다.
따라서 앱별로 독자적인 push를 설계해 사용하는 경우 통신량 및 배터리 소모가 늘어나는 점이 문제입니다.
사용자의 입장에서는 OS에서 제공하는 push 서비스(C2DM)을 이용해서 전력을 절약해 주는 것이 좋습니다.