2014-05-20 2 views
1

Android 및 iPhone 앱용 실시간 채팅 응용 프로그램을 만드는 데 관심이 있습니다. 나는 웹 소켓에 대한 배경 조사를 해왔고 합리적인 선택 인 것으로 보인다. 그러나 채팅 응용 프로그램에서 흔히 볼 수있는 것처럼 메시지를 언제든지 사용자에게 보낼 수 있다는 사실을 알게되면 클라이언트 서버 연결을위한 소켓이 절대로 닫히지 못하게됩니다. 그렇지 않으면 사용자는 정보 스트림에서 끊어집니다 및 새 메시지.Android 용 웹 소켓 채팅 응용 프로그램

궁금한 점이 있나요? 소켓에 영구적으로 열린 연결을 사용하여 이러한 방식으로 내 응용 프로그램을 구축하는 데 악영향을 미칩니 까?

답변

2

데이터 연결을 유지해야하기 때문에 클라이언트의 주된 단점은 라디오의 배터리 소모입니다. 이것은 밀어 넣기를 시도하는 모든 솔루션에서 동일하므로 WebSocket 간에는 실제 차이가 없습니다. HTTP long poll. 메시지가 즉시 도착하게하려면 연결이 필요합니다.

서버의 주요 비용은 RAM입니다. WebSocket 서버는 HTTP 서버와 달리 연결 당 하나의 스레드를 사용하지 않도록 설계되었으므로 대규모 병렬 연결까지 확장해도 문제가되지 않습니다.

+0

모두를 사용하는 대화에 대한 샘플 코드, 배터리 소모가 발생할 수있다. 배터리가 너무 많아서 웹 소켓을 사용하여 채팅 앱을 만들 수 없습니까? – Sauron

+0

@Sauron - 거기에 숫자가 없습니다. 많은 것들이 당신이 받아 들일 수있는 대기 시간에 달려 있습니다. 연결이 사용되지 않으면 라디오는 에너지 절약 상태가되고 메시지를 받으면 빠른 전송 상태로 돌아가려면 몇 초가 걸릴 수 있습니다. 예 : ping을 사용하여 연결을 빠르게 영구적으로 유지하면 라디오가 에너지 절약을 수행하는 것보다 훨씬 많은 배터리가 소모됩니다. – gzost

3

앱이 포 그라운드에있을 때만 앱을 백그라운드에서 GCM으로 폴백하여 기기를 깨우고 다시 소켓 연결을 설정하는 경우에만 소켓 연결을 사용하는 것이 좋습니다. 이 방법은, 애플 리케이션이 많은 배터리 걸리지 않습니다. 또한 iOS에서 소켓 연결을 오래 동안 허용할지 여부는 의심 스럽습니다. 여기 건물 등 WHATSAPP 같은 임의의 통신 애플리케이션에서, 소켓 접속하고 푸시 알림 https://github.com/AppLozic/Applozic-Android-SDK

관련 문제