2009-05-03 4 views
7

웹 서버가 Comet없이 웹 브라우저에 메시지를 보내도록 할 수 있습니까?혜성이없는 Ajax를 되 돌리시겠습니까?

페이스 북과 구글과 같은 주요 웹 회사는 이러한 목적으로 Comet을 사용하며 TCP 연결이 주요 브라우저에 대해 활성화 된 경우 사라지기를 기다리는 추한 해킹처럼 보입니다.

답변

5

는 웹 서버 가 혜성없이 웹 브라우저 에 메시지를 보낼 수 있도록 할 수 있습니까?

예, Silverlight, Flex, Flash 및 Java 애플릿을 통해 가능합니다.

페이스 북 및 구글과 같은 모든 주요 웹 회사는이 목적을 에 대한 혜성을 사용하고 그냥 TCP 연결이 주요 브라우저를 사용할 수 있다면 사라 기다리고 못생긴 해킹 처럼 보인다.

HTML 5 웹 소켓은 문제를 해결하지 못합니다. 많은 사람들이 직장, 대학 또는 학교에서 Google 및 Facebook을 사용하며 방화벽은 종종 비표준 포트 및 비 HTTP 트래픽을 차단한다는 것을 알 수 있습니다. 따라서 웹 브라우저로 메시지를 보내는 솔루션은 HTTP를 통해 작동해야하며 종종 HTTP처럼 보입니다. 이것이 Google과 Facebook이 Comet을 사용하는 이유이며, 그렇지 않으면 계속해서 그렇게 할 것입니다. 그렇지 않으면 사용자의 많은 부분에 도달 할 수 없습니다. 실제로 일부 방화벽과 역방향 프록시는 장기간 실행되는 HTTP 연결을 닫을 것이므로 Ajax 폴링 연결이 대체로 사용됩니다. Reverse Ajax를 통해 브라우저에 메시지를 전송할 수있는 서버를 찾고 있다면 StreamHub Reverse Ajax과 같은 것을 제안 할 수 있습니다.

+1

참조 : http://stackoverflow.com/questions/1227266/how-do-i-open-a-connection-back-to-the-server-using-flex – DLauer

+0

그리고 http://stackoverflow.com/ 질문/1225147/how-do-i-open-a-tcp-socket-from-silverlight – DLauer

2

다른 방법이 있다면 왜 페이스 북과 구글이 그렇게 할 것이라고 생각합니까?

글쎄, 좋습니다, 다른 방법이 있습니다. 페이지에 Java 애플릿을 포함시킬 수 있습니다. Java 애플릿이 서명되고 사용자가 권한을 부여하면 서버가 이벤트를 보내도록 장기 실행 연결을 열 수 있습니다. 하지만 그렇게되면 깨지기 쉽고 더 많은 사용자 상호 작용이 필요하며 시작하기가 더디고 Comet보다 적은 플랫폼에서 작동 할 수있는 무언가를 얻을 수 있습니다.

HTML5에 server-sent eventsweb sockets을 추가하는 방법에 대한 논의가있었습니다. 그러나 이는 매우 예비 적이므로 표준에 포함되지 않을 수도 있습니다.

2

"혜성"은 기존 HTTP 프로토콜을 사용하여 데이터 푸시를 시뮬레이션하는 모든 것에 대한 인위적인 용어로서 사용자가 할 수있는 일은 아무것도 없습니다.

유일한 해결책은 현재 프로토콜의 "강화"또는 아마도 널리 사용되는 플러그인 기반 솔루션 일 것입니다 ... 당신은 그것을 위해 Java를 사용할 수 있습니다. 하지만 기본적으로 브라우저에서 들어오는 연결을 사용할 수 있어야하므로 다른 문제가 발생할 수 있습니다.

2

혜성은 긴 폴링 아약스 호출로 구현 될 수 있으므로 의미론의 문제가됩니다. Here, for example, is a jquery plugin은 jQuery의 ajax 호출 위에 Bayeux 프로토콜을 사용하여 Comet을 구현합니다.

관련 문제