기본적으로 Web은 요청에 따른 답변을 하는 구조로 되어 있습니다.
채팅이나, Always Connected(또는 On)으로 연결된 Home Trading System은 클라이언트와 서버가 항상 연결되어 있죠.
클라이언트와 서버가 항상 연결되어 있는 경우엔, 여러가지 문제가 있습니다.
- 동시 접속유저가 몇천명 이내로 제한이 됩니다.
보통 웹서버 한대가 몇만에서 몇십만 유저를 커버합니다.
사실 유저가 매 초 요청을 하진 않기 때문입니다.
근데 접속을 해 놓으면 Ping을 하기 위해서라도 통신이 많아지고,
커넥션을 유지하는 네트워크상의 코스트도 높습니다.
- 접속된 상태에서 데이터를 주고 받기 위해서는 별도의 프로토콜이 추가로 필요할 수 있습니다.
별도의 프로토콜을 구현하면 성능이 오히려 떨어지는 경우도 많습니다.
- 유저의 패킷 요금이 추가로 발생하는 문제도 있습니다. 무제한 요금제를 사용하지 않는다면 부담스럽겠죠.
그래서 보통 앱에서는 사람이 풀다운 리프레쉬 동작을 해서 데이터를 추가로 받아오게 합니다.
푸쉬로 해결할 수도 있고요. 푸쉬가 구현하기 더 쉬울 것 같네요.
사람들이 이미 앱들을 사용하면서 사용패턴에 익숙해져 있습니다.
굳이 그런 기능을 넣어야 하느냐는 앱마다 다르겠지만,
일반적인 리스트를 보여주는 화면에서 그럴 필요가지는 없다고 봅니다.
굳이 필요하다면, 1분 뒤에 한번씩 서버에 갔다온다던지 할 수 있죠.
그러나 유저가 우연히 어떤 버튼을 터치하는 순간,
백그라운드에서 타이머나, 소켓이 연결되어서 리프레쉬가 된다면,
유저가 엉뚱한 놈을 누르게 될 수도 있고,
안드로이드 내의 process 순서가 꼬일 수도 있습니다.
그런 예외적인 상황이 발생하기 때문에 앱은 수동적이면서도
유저가 이미 다른 앱에서 학습하여 예상할 수 있는 동작방식으로 구동되는게 바람직해 보입니다.