웹 서버에서 브라우저로 데이터를 푸시할 수 있는 방법이 있습니까?
물론 Ajax에 대해서는 알고 있지만, Ajax의 문제는 브라우저가 서버를 자주 폴링하여 새로운 데이터가 있는지 확인해야 한다는 것입니다.이것에 의해, 서버의 부하가 증가합니다.
서버를 자주 폴링하는 것 외에 (Ajax를 사용해도) 더 좋은 방법이 있습니까?
네, COMET http://en.wikipedia.org/wiki/Comet_(programming) 입니다.검색하기에 좋은 구글 용어로는 AJAX-push와 reverse-ajax가 있습니다.
네, 리버스 아약스 또는 코메트라고 합니다.Comet은 기본적으로 데이터를 웹 브라우저에 실시간으로 푸시하기 위해 긴 수명 HTTP 요청을 여는 다양한 방법을 포괄적으로 일컫는 용어입니다.Stream Hub Push Server를 추천합니다.이 서버는 멋진 데모를 갖추고 있어 다른 어떤 서버보다 사용하기 쉽습니다.간단한 인트로에 대해서는 Getting Started with Comet 및 Stream Hub Tutorial을 참조하십시오.Community Edition은 무료로 다운로드할 수 있지만 동시 사용자 수는 20명으로 제한됩니다.상용 버전은 지원만으로 충분히 가치가 있으며 SSL과 데스크톱도 이용할 수 있습니다.NET 및 Java 클라이언트 어댑터도움말은 Google Group을 통해 이용할 수 있으며, 인터넷에는 많은 튜토리얼이 있으며, GWT Comet 어댑터도 있습니다.
요즘은 WebSockets를 사용해야 합니다.이것은 HTTP와의 접속을 개시해, 쌍방향 클라이언트-서버 메시지 베이스의 통신으로 업그레이드할 수 있는 2011년의 표준입니다.
javascript에서 쉽게 연결을 시작할 수 있습니다.
var ws = new WebSocket("ws://your.domain.com/somePathIfYouNeed?args=any");
ws.onmessage = function (evt)
{
var message = evt.data;
//decode message (with JSON or something) and do the needed
};
서버측의 처리는, 사용의 10 테크놀로지 스택에 의해서 다릅니다.
기본적으로 "역 Ajax"인 Comet(Ajax와 Comet이 세척제라는 사실을 스푸핑한 것)을 살펴보세요.이를 위해서는 각 사용자가 알림을 수신하기 위해 장시간 서버 연결이 필요하므로 앱 작성 시 성능 영향을 인지해야 합니다.
http://en.wikipedia.org/wiki/Comet_(programming)
혜성은 확실히 네가 원하는 거야.언어/프레임워크 요건에 따라 다양한 서버 라이브러리를 사용할 수 있습니다.예를 들어 WebSync는 ASP용 IIS 통합 COME 서버입니다.NET/C#/IIS 개발자 및 다른 언어와의 긴밀한 통합이 필요한 경우 기타 스탠드아론 서버도 다수 있습니다.
Comet에 시간을 투자할 것을 강력히 제안합니다만, 실제로 사용할 수 있는 실장이나 라이브러리는 모르겠습니다.
라이브 Callcenter의 에이전트 및 call-queue 상태를 업데이트해야 하는 웹 앱의 일종의 "Callcenter 제어판"을 위해 델은 작동하지만 사용할 수 있는 라이브러리와는 거리가 먼 사내 솔루션을 개발했습니다.
전화 시스템과 통신하고, 새로운 이벤트를 기다리고, 상황 사진을 유지하는 작은 서비스를 서버에 실장했습니다.이 서비스는 소규모 웹 서버를 제공합니다.
당사의 웹 클라이언트는 HTTP를 통해 이 웹 서버에 접속하여 마지막 사진(XML로 코드화됨)을 요청하고 다시 표시하며 새 사진을 요청합니다.이 시점에서 웹 서버는 다음을 수행할 수 있습니다.
- 새 사진이 있는 경우 반환
- 이벤트가 발생하기를 기다리는 클라이언트를 몇 초간(설정에서는 30) 차단하고 사진을 변경합니다.이 시점에서 이벤트가 생성되지 않은 경우 동일한 사진이 반환되지만 연결이 활성화되고 클라이언트가 타임아웃되지 않습니다.
이렇게 하면 클라이언트가 폴링할 때 응답은 최대 0 ~30초 안에 수신됩니다.새 이벤트가 이미 생성된 경우 즉시 해당 이벤트를 가져옵니다). 그렇지 않으면 새 이벤트가 생성될 때까지 차단됩니다.
기본적으로는 폴링이지만 웹 서버를 과열시키지 않기 위한 다소 현명한 폴링입니다.만약 Comet이 당신의 답이 아니라면, 나는 이것이 같은 아이디어로 구현될 것이라고 확신하지만, 보다 광범위한 AJAX 또는 더 나은 결과를 위해 JSON의 코딩으로 구현될 것이라고 확신한다.이것은 AJAX 이전 시대의 설계이기 때문에 개선의 여지가 많다.
이것을 실제로 경량화할 수 있는 사람이 있다면, 훌륭합니다!
Comet의 흥미로운 대안은 플래시에 소켓을 사용하는 것입니다.
또 다른 표준 방법은 SSE(Server-Sent Events, JavaScript 오브젝트 뒤에 EventSource라고도 함)입니다.
Comet은 실제로 Dojo Toolkit(http://www.dojotoolkit.org)의 Alex Russell에 의해 만들어졌습니다.자세한 내용은 http://cometdproject.dojotoolkit.org/ 를 참조해 주세요.
다른 방법이 있습니다.그들이 독자 분의 상황에서 "더 나은"지 잘 모르겠습니다.페이지 로드 시 서버에 접속하여 서버에서 송신되는 내용을 대기하는 Java 애플릿을 가질 수 있습니다.부팅 시 속도가 상당히 느리지만 브라우저는 폴링 없이 서버로부터 데이터를 드물게 수신할 수 있습니다.
Blaze와 함께 클라이언트에서 Flash/Flex 애플리케이션을 사용할 수 있습니다.서버측의 DS 또는 LiveCycle.데이터는 RTMP 접속을 사용하여 클라이언트에 푸시할 수 있습니다.RTMP 는 비표준 포토를 사용하고 있는 것에 주의해 주세요.단, 포트가 차단되면 폴링에 쉽게 폴링할 수 있습니다.
영속적인 http 접속을 사용하면 목적한 것을 실현할 수 있습니다.
위키피디아에서 코메트 기사를 확인하세요. 시작하기에 좋은 장소입니다.
많은 정보를 제공하지는 않지만 이벤트 구동 사이트(a'la digg spy)나 이와 유사한 것을 구축하려는 경우 연결이 닫히지 않는 URL에 연결하는 숨겨진 IFRAME을 구현하고 스크립트 태그를 서버에서 클라이언트로 푸시하여 실행할 수 있습니다.e업데이트
Meteor Server는 COME용으로 설계된 웹 서버입니다. 멋진 데모이며 트위터 폴에서도 사용되고 있습니다.
서버에 대한 접속이 열리면 열린 상태를 유지할 수 있고 서버는 오래 전에 사용하던 콘텐츠를 푸시할 수 있습니다.multipart/x-mixed-replace
하지만 IE에서는 작동하지 않았습니다.
컨텐츠의 변경되지 않은 헤더를 송신하지 않고, 접속을 열어 두는 것으로, 보다 푸쉬와 같이 동작하도록 하는 폴링으로, 현명한 작업을 할 수 있다고 생각합니다만, 저는 이것을 한 적이 없습니다.
혜성 구성 요소를 시험해 볼 수 있습니다. 매우 실험적이긴 하지만...
이 라이브러리의 https://github.com/SignalR/SignalR에서 데이터를 이용할 수 있게 되었을 때 클라이언트에 동적으로 푸시하는 방법을 확인하십시오.
jsp 페이지를 사용하는 경우 Java Pushlet을 확인할 수도 있습니다.
Reverse를 참조할 수 있습니다.HTTP도 있습니다.
언급URL : https://stackoverflow.com/questions/19995/is-there-some-way-to-push-data-from-web-server-to-browser
'itsource' 카테고리의 다른 글
각 $http 서비스에서는 오류 상태를 파악하려면 어떻게 해야 합니까? (0) | 2023.02.14 |
---|---|
에의 JSON의 시리얼화를 해제하고 있습니다.Newtonsoft를 사용하는 NET 객체(혹은 LINQ에서 JSON으로) (0) | 2023.02.14 |
워드프레스, 하위 페이지에 더 많은 게시물 표시 (0) | 2023.02.14 |
Eslint 오류 - 화살표 본문을 둘러싼 예기치 않은 블록 문입니다. 반환된 값을 = 바로 다음에 이동합니다.> (0) | 2023.02.14 |
Ionic: 어떻게 div의 중심을 잡습니까? (0) | 2023.02.14 |