2009-06-04 5 views
5

방금 ​​AJAX 푸시 엔진에 대해 알았지 만 Linux/Apache에서 실행됩니다. 이는 나를위한 옵션이 아닙니다. AJAX와 현재 어떻게 데이터를 웹 페이지 클라이언트로 보낼 수 있습니까?

http://www.ape-project.org/

내가 트래픽이 높은 사이트 크지 않다 자주 서버를 폴링해야 페이지를 최신 상태로 유지합니다. 필요한 경우에만 클라이언트에 데이터를 푸시하는 옵션이 좋은 옵션이지만 기본적으로 JavaScript는 소켓 인 AFAIK를 지원하지 않습니다. 내가 읽은 트릭은 하나, 사이트가 사라지면 플래시 모듈을 사용하여 소켓 통신을 처리하고 자바 스크립트로 메시지를 전달한다.

이 접근 방식을 연구 할 때 문제는 키워드로 "JavaScript push"가 내가 원하는 컨텍스트 대신 배열에 대한 푸시 기능을 제공한다는 것입니다.

브라우저에서 푸시 통신을 수행하기 위해 서버와의 지속적인 연결을 설정할 수 있습니까? Flash/ActionScript가 필요합니까 아니면 현재 사용중인 모든 브라우저에서 사용할 수있는 다른 옵션이 있습니까? (IE6/7/8, FF3, Safari, Chrome)

서버와 관련하여 포트 보안뿐 아니라 원본 정책으로 인해 문제를 해결해야합니다. 사용 가능한 옵션에 대해 설명 할 수있는 점을 알려 주시면 감사하겠습니다.

+0

좀 답변으로 이어질 몇 가지 관련 질문을 발견 ... 그리고 더 많은 질문입니다. :) http://stackoverflow.com/questions/471780/asp-net-http-server-push-to-client http://stackoverflow.com/questions/50831/how-to-push-data- 다양한 클라이언트 유형에서 실시간에 가까운 http://stackoverflow.com/questions/219868/client-notification-should-i-use-an-ajax-push-or- 설문 조사 http://stackoverflow.com/questions/847227/real-time-chat-with-push-notification – Brennan

답변

0

이것은 재미있는 일이지만이 위키 페이지의 확장 성 문제에 대해서는 읽지 않았습니다. 10,000 개의 열린 긴 폴링 연결이있는 경우 웹 서버는 무엇을 수행합니까?

기본 개념에 익숙하지 않은 사용자를 위해 서버에서 클라이언트로 데이터를 임시로 푸시하는 것은 불가능하며 항상 그렇습니다. HTTP 프로토콜이이를 지원하더라도 NAT 방화벽이 관련된 경우에는 네트워크가 그렇지 않습니다.

따라서 서버 푸시 통신을 제공한다고 주장하는 솔루션은 클라이언트가 시작한 연결을 유지해야하며 결국에는 시간이 초과됩니다. 서버 확장 성 및 성능에 부정적인 영향을 미치므로 이에 대한 우려가 있습니다.

+0

페이스 북, 그리고 구글은 긴 폴링을 사용하고, 그들은 아직 떨어지지 않은 것 같습니다. 어떤 방법으로도 불가능 *하지 않습니다. – cgp

+0

서버에서 클라이언트에 대한 연결을 열려면 포트 노킹 방법을 NAT로 사용하여 연결을 설정하십시오. 그런 다음 소켓을 유지 관리 할 수 ​​있습니다. 내 관심사는 많은 소켓을 활성 상태로 유지하는 서버의 한계입니다. 적어도 클라이언트가 유휴 상태인지 감지 할 수 있으면 연결을 때때로 재설정하거나 비활성 클라이언트를 유휴 상태로 만들 것입니다. – Brennan

+0

음, altCognito, Todd Hoff가 그의 블로그에 있다면, 작년에 Facebook의 1 억 달러 하드웨어 투자가 그 일을 처리했습니다. 그러나이 기사에는 서버 구현에 대한 몇 가지 세부 사항이 있습니다. 분명히 롱 폴링은 .Net이나 다른 메인 스트림 웹 서버/언어 플랫폼의 IIS에서하고 싶은 일이 아닙니다. 차단 된 각 연결은 값 비싼 리소스를 묶습니다. – cdonner

관련 문제