2016-06-28 3 views

답변

2

"Comet"이라는 용어는 "Ajax"라는 용어에 농담으로 태어났습니다.

AJAX (Asynchronous JavaScript and XML)는 HTTP 요청을 수행하고 브라우저의 JavaScript 엔진에서 HTTP 응답을 처리하는 기술입니다. 당시 "Ajax"도 청소 용품이었습니다.

AJAX를 사용하는 개발자가 서버 측 이벤트 브라우저에 낮은 대기 시간을 제공하는 기술을 연구 할 때 "혜성"이라는 단어는 "혜성"이라는 단어가일 때 "혜성"이 " Ajax "클리닝 제품,"Comet "기술이"Ajax "기술보다 낫습니다.

"혜성"은 매우 짧은 대기 시간 (1 초 미만)으로 클라이언트 (일반적으로 브라우저)에 서버 측 이벤트를 알리는 데 사용되는 웹용 일련의 HTTP 기술입니다.

"긴 폴링"은 아마도 가장 인기 있고 신뢰할 수있는 기술 중 하나 일 것입니다. 다른 기술로는 "숨겨진 iframe", "스크립트 삽입"(일명 JSONP) 및 "무한 응답"(일명 "스트리밍") 기술 (예 : HTTP/1.1의 Transfer-Encoding: chunked 메커니즘 사용)이 있습니다.

이제 Server Sent Events (SSE, 일명 EventSource)는 표준화 된 스트리밍 기술입니다. 최근에 많이 개발되지는 않았습니다. Transfer-Encoding: chunked 메커니즘을 사용하는 대신 SSE는 브라우저가 구현하는 Content-Type: text/event-stream을 사용하고 HTTP 전송 메커니즘 위에 간단한 프로토콜을 사용합니다. 즉, 서버에서 가져온 콘텐츠에는이 단순한 프로토콜로 정의 된 형식이 있습니다.이 형식은 브라우저에서 구문 분석하여 자바 스크립트 엔진에 전달되는 이벤트로 변환해야하며 응용 프로그램에는 수신 할 수있는 API가 있습니다 이러한 자바 스크립트 이벤트.

BOSH (XEP-0124으로 정의 됨)는 특히 XMPP에서 사용되는 긴 폴링 기법의 변형이며, 너무 "혜성"기술입니다.

Bayeux

는 HTTP 또는 웹 소켓과 같은 전송 프로토콜 위에 의미 채널과 메시지를 정의하는 전송 프로토콜에 독립적이다. CometD 프로젝트는 HTTP와 WebSocket을 기반으로 Bayeux를 사용하여 피어 - 투 - 피어, 게시 - 구독 및 원격 호출 functionalities을 애플리케이션에 제공합니다. 다른 프로젝트는 HTTP 또는 WebSocket (또는 둘 다) 위에 Bayeux 프로토콜을 사용합니다.

마지막으로 WebSocket은 HTTP에없는 양방향 기능이 내장 된 전송 프로토콜입니다. 그러나 전송하는 페이로드의 의미를 정의하지 않으며이를 설명하는 메타 데이터가 있으므로 Bayeux와 같은 다른 프로토콜의 전송 프로토콜로 주로 사용됩니다. WebSocket은 HTTP를 기반으로하지 않으므로 "Comet"기술이 아닙니다.

"아키텍처"라는 단어가 무엇을 의미하는지에 따라 달라집니다.

"Comet"은 HTTP를 사용하여 대기 시간이 적은 이벤트를 처리하는 기술 그룹입니다.

롱 폴링, HTTP 청크 스트리밍, SSE, BOSH는 이러한 "혜성"기술 중 일부입니다.

Bayeux는 메시징에 사용되는 JSON을 기반으로하는 전송 불가능한 프로토콜입니다.

WebSocket은 Bayeux와 같이 일반적으로 전송이 불가능한 다른 프로토콜과 함께 사용되는 양방향 전송 프로토콜입니다. 브라우저에서의 지원은 "Comet"기술을 대체합니다.

관련 문제