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

안드로이드 채팅 어플 질문입니다.

0 추천
카카오톡과 비슷한 형식으로 채팅을 구현하려고 합니다.

 

현재 구상한 것은 아래와 같습니다.. !

 

GCM을 이용하지 않고

안드로이드 서비스로 tcp 소켓 하나 열어서 서버와 연결을 유지하여,  자기한테 온 메세지가 있으면

다른 포트를 열어서 메세지를 읽어 오려고 합니다.

 

이를 위해 서버에서 접속한 단말들의 소켓을 리스트에 저장해뒀습니다.

근데 이렇게 할 경우, 각 단말들과 접속유지 패킷을 주고받으려면 각각 소켓들에 대해서 패킷을 읽어오도록 쓰레드를 돌려야 하는데, 이렇게 생각하니 어디선가 잘못된거 같습니다. ㅠㅠㅠㅠㅠ

동시에 돌릴 수 있는 스레드수가 제한적일텐데... 유저 1명당 스레드 한개씩 돌리는건 잘못된 설계인거같습니다.

 

잘못된 부분 지적, 혹은 나은 방향으로의 키워드 정도 제시해 주시면 감사하겠습니다 !!!
lunker (120 포인트) 님이 2015년 4월 1일 질문

1개의 답변

0 추천
궁금한 부분에 대한 답에 도달하기전에 심각한 문제가 있습니다.

폰이 대기모드로 꺼져있는 상태에서는 통신이 불가능해서 메시지가 도착하지 않습니다.

다시말해 깨어날 방법이 없죠.

GCM쓰세요.
익명사용자 님이 2015년 4월 1일 답변
아...그런가요 =ㅅ=............
감사합니다!
그러면 GCM이면 XMPP 방식으로 해야하는건가요?

덤으로 카톡이나 라인같은 메신저들은 어떻게 구현되어있는건가요 ??
다 GCM이용하나요 ?
아 그리고 제가 GCM을 고려안한 이유가
아무래도 실시간이 힘들다는 부분때문이었는데, 속도가 실시간 채팅 커버될만큼 충분한가요?
메신저들은 채팅처럼 보이게 만든 앱이 아닐까여?
아프리카티비 등과같이 실시간 채팅은 해당 방에 접속되어져있는 상태에서만 가능하니 tcp 소켓통신을 해도 되겠지만 일반 메신저같은 경우는 udp 방식 일거같은데
...