2011-02-16 2 views
0

다음과 같이 작동하는 Adobe AIR 앱을 작성했습니다.JavaScript의 영구 루프 만들기

setTimeout을 사용하여 사용자가 로그인하고 영구 루프가 만들어집니다. 이 루프는 HTTP 요청을 수행하고 반환 된 json md5 문자열을 전역 변수와 비교합니다. 이 두 값이 다른 경우 dom은 새로운 내용으로 업데이트됩니다. 사용자가 회신 또는 메시지 삭제와 같은 다른 작업을 수행하면 자동 업데이트가 수행되고 루프가 "일시 중지"됩니다. 기본적으로 간단한 전자 메일 클라이언트와 같습니다.

내가하고있는 방식은 신뢰할 수없고 메모리 누수가 발생합니다. 나는 그것을 처음부터 다시 쓸 계획이고, 나는 지금있는 배에 올라가고 싶지 않다. 누군가가 나를 어떻게 할 것인지 또는 조언을 해 줄 수있는 사례를 나에게 줄 수 있다면 큰 도움이 될 것입니다. 미리 감사드립니다!

답변

0

자주 폴링하지 말고 "긴 폴링"또는 "COMET"이라는 기술을 사용하십시오. 기본적으로 업데이트 된 데이터 등으로 인해 응답이 없거나 시간이 초과 될 때까지 열려있는 요청을 보냅니다. 일부 응답을 받으면 즉시 새 요청을 보냅니다.

이렇게하면 전송되는 요청의 양이 크게 줄어들어 많은 대역폭과 서버로드가 절약됩니다.

+0

좋은 제안이긴하지만 불행히도 이것은 나를위한 선택 사항이 아닙니다. 현재 html 페이지를 스크랩하여 데이터를 검색하고 있으며 처리 할 수있는 여분의 리소스가있는 1000 명 이상의 동시 사용자를 처리해야한다고 생각하지 않습니다. 클라이언트 측에서 루프를 수행하는 방법에 대한 제안 사항을 제공해 주시겠습니까? – Kyle

+0

setTimeout/setInterval 만 좋은 해결책입니다. – ThiefMaster