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

서버로부터 실시간으로 데이터 받아오기

0 추천
예를 들어 페이스북 어플의 뉴스피드를 보면 게시물을 보는 와중에도

계속해서 실시간으로 새로운 게시물들이 뜨지 않습니까?

이건 어떤 원리 입니까?

 

저는 탭을 전환할때마다 리스트뷰의 내용을 새로운 데이터를 받아와 업데이트 하고 싶습니다.

탭을 전환할 때마다 서버에 데이터 요청을 하고 받는 것입니까?????

(그건 너무 비효율적으로 보입니다. 뭔가 더 대단한 기능이 있을 것 같습니다.)

 

더 나아가서 제가 하는 서버와 클라이언트간의 통신 방식이 잘못된 것인지 검토받고 싶습니다..

(저는 실력이 미숙한 학생입니다)

java project를 서버로 하고, android app과의 기본적인 socket통신 방식을 사용하고 있습니다.

android app에서 Student에 대한 데이터가 필요할때

Student에 대한 데이터를 요청한다는 의미로 서버에 'S'를 전송합니다.

서버에서는 android app에서 받은 데이터를 if문으로 식별하고,

수신한 데이터가 'S'이므로 Student에 대한 데이터를 android app에 보냅니다...

이것이 제가 구현한 양방향 통신입니다...

이것이 세련된 통신 방식입니까?

실제 실무에서는 어떻게 구현하는지 궁금합니다...
익명사용자 님이 2014년 8월 19일 질문

2개의 답변

0 추천
해보지는 않았지만 service를 사용해서 백그라운드에서 계속 데이터를 수신하시면 어플로 다른일을 하더라도 계속 데이터를 수신할 수 잇을 꺼에요. 그리고 시간대별로나 새로운 업데이트가 생기면 Listener나 notification으로 신호를 주면 되지 않을까요?

 

아무튼 제 이야기의 핵심은 Service를 사용해서 백그라운드에서 계속 데이터를 수신하시면 새로운 데이터를 받을 경우 반응하게 만드시면 될꺼 같습니다.
jeongupark (710 포인트) 님이 2014년 8월 19일 답변
0 추천
페이스북 어플을 안써봐서 모르겠는데,

서버 업데이트에는 여러가지 방법이 있겠죠.

단순히 서버에서 새로운 이벤트가 발생했다 하면 푸쉬를 날려서, 앱단에서 푸쉬날라올떄만 서버접속해서 해당 게시물가져와서 붙일수도 있을테구요,

탭을 변경할때마다 서버의 특정값만 참조를 하다가 그 값이 바뀌면 새로운 데이터를 수신할수도 있을테구요..

일정시간마다 새로운 게시물이 올라왔는지 통신을 할수도 있을테구요..

 

꼭 모든 데이터를 다 가져올 필요는 없죠.

가장 최신 테이블이 몇번인지 저장한뒤에 다르면 서버에 접속해서 그 게시물만 가져와서 폰에 저장해서 번호만 동기화시킬수도있을테고..

 

생각하기 나름일거같네요..

 

잘은 모르겠지만 굳이 소켓을 사용하는 이유가 있는지 궁금하네요.

단순히 Student데이터가 필요하면 그냥 DB에 query만해서 가져오면되지않나요?

DB서버에 접속해서 query하는 방법은 인터넷에 많습니다.

 

소켓보다 http통신이 나을거같다는 생각이드네요..
기초개발자 (24,060 포인트) 님이 2014년 8월 19일 답변
이쪽에 한표 던지고 갑니다.
...