2010-04-17 2 views
3

Google AppEngine에서 웹 응용 프로그램을 만들고있어 특정 이벤트가 발생하면 가능한 한 빨리 사용자에게 알리 길 원합니다. 문제는 하나의 연결 (누군가가 대화방에 메시지를 쓰는 중)에서 다른 연결 (다른 사람이 메시지를받는 경우)에 전파하기 위해 일어나는 일이 필요하다는 점에서 채팅 서버를 말하는 것과 유사합니다. 서버에서 클라이언트로 신속한 업데이트를 얻으려면 XmlHttpRequest를 사용하여 긴 폴링을 사용하여 AppEngine이 타임 아웃을 다시 설정하는 것 이외의 다른 작업을 방해하지 않기를 바랍니다. 그러나 실제 문제는 AppEngine의 연결간에 효율적인 알림입니다.Google AppEngine에서 "실시간"메시징을 구현하려면 어떻게해야합니까?

busy-waiting을 필요로하지 않는 AppEngine에서 이러한 유형의 상호 연결 알림을 지원합니까? 내가 이것을 할 수있는 유일한 도구는 데이터 저장소 (느린) 또는 memcache (신뢰할 수없는 것) 중 하나를 사용하는 것이며, 그 중 아무 것도 바쁜 대기를 피할 수있는 도구는 아닙니다.

참고 : AppEngine의 XMPP 지원에 대해 알고 있습니다. 관련이 있지만 브라우저 기반 솔루션을 원합니다. XMPP를 통해 사용자에게 메시지를 보내는 것은 옵션이 아닙니다.

+0

"실시간"또는 "예상 지연 작은"을 의미합니까? 전자는 인터넷을 통해 달성 할 수 없습니다. 메시지를 전달할 시간에 제약을 두지 않기 때문입니다. 아무 것도 없으면 백호 효과가 있습니다. –

+0

한 연결에서 다른 연결로 알림을받는 데 걸릴 수있는 시간에 하드 실시간 제한을 기대하지 않는다는 것을 알기 위해 실시간으로 따옴표를 붙였습니다. 정말 합리적인 리소스 요구 사항을 유지하면서 가능한 한 작은 지연을 갖는 솔루션을 요구하고 있습니다. – SoftMemes

답변

4

App Engine의 요청은 실행 시간이 30 초로 제한되어있어 긴 폴링을 어렵게 만듭니다. 또한 평균 실행 시간을 낮추거나 쿼리를 실행하기 위해 인스턴스가 너무 빨리 소모됩니다. App Engine은 앱이 비교적 빠르면 새로운 인스턴스 만 제공합니다. 그러한 이유 때문에 Long Polling은 App Engine에서 매우 강력하게 권장되지 않습니다.

잠시 기다릴 준비가 된 경우 roadmap에는 찾고자하는 내용 인 "브라우저 푸시 (혜성) 통신 지원"이 포함되어 있습니다.

+0

감사합니다. 실제로 긴 폴링을하는 것이 어렵게 만드는 한계점에 대해 설명합니다. – SoftMemes

+0

HTTP 연결과 데이터 저장소 API 요청에 대한 할당량이 있으므로 비용이 많이 들기 때문에 실제로 긴 폴링을 사용하면 두 가지 모두를 빠르게 소모 할 수 있습니다. –

1

App Engine 로드맵에는 Comet 지원이 있습니다. 그렇지 않으면이 문제를 해결하는 데 어려움이 있습니다.

+0

AppEngine에 대한 긴 폴링을 정확하게 수행 할 수 없으며 AppEngine의 "혜성 지원"은 무엇을 의미합니까? – SoftMemes

1

항상 WebSync On-Demand과 같은 호스트 된 혜성 서비스를 사용할 수 있습니다. 그러면 호스팅에 사용하는 서버 유형에 관계없이 이벤트를 푸시 할 수 있습니다.

관련 문제