웹 기반 실시 간 통신 방안

프로필:
        전통 적 인 웹 방식 은 클 라 이언 트 가 요청 을 하고 서버 측 응답 방식 으로 작 동 하지만 실제 응용 에서 클 라 이언 트 는 서버 와 지속 적 인 업 데 이 트 를 유지 해 야 합 니 다. 예 를 들 어:
        모니터링 시스템
        주가 시스템
        이 응용 프로그램 들 은 클 라 이언 트 가 요청 하지 않 고 서버 에서 실시 간 정 보 를 클 라 이언 트 에 보 내야 합 니 다.
구현 방식:
        일반 폴 링
        Comet: Http 의 긴 연결 을 바탕 으로 하 는 '서버 푸 시' 기술 입 니 다. 그 중에서 세 가지 로 나 눌 수 있 습 니 다.
                     Ajax 기반 긴 폴 링 방식
                     Ajax 기반 흐름 방식
                     iframe 및 htmlfile 기반 흐름 방식
          클 라 이언 트 인터페이스 기반 의 '서버 푸 시' 기술 은 두 가지 로 나 뉜 다.
                    Flash XMLSocket
                    JavaApplet
          WebSocket(html5)
실현:
        일반 폴 링
                시간 에 맞 춰 페이지 새로 고침: < meta http - equiv = "refresh" content = "5" / >
                Ajax 정시 폴 링 요청 데이터:
var polling=function(){
    $.post("test.ashx",function(data){
      $("#name").append(data+"<br/>")
     })
}
interval=setInterval(polling,1000);

        Comet
                 Ajax 기반 긴 폴 링 방식:
                        Ajax 는 XML HttpRequest 대상 을 호출 하여 비동기 요청 을 보 냅 니 다. Ajax 리 셋 함수 에서 서버 에서 되 돌아 오 는 정 보 를 처리 한 후 다시 요청 을 보 내 연결 을 다시 만 듭 니 다.
                        이러한 긴 폴 링 방식 에서 클 라 이언 트 는 XML HttpRequest 의 ready State 가 4 (데이터 전송 종료) 일 때 리 셋 함 수 를 호출 하여 정보 처 리 를 한 다음 에 다시 연결 을 만 듭 니 다.
                        var pull=function(){
                           $.ajx({url:"test.ashx",
                                      type:"post",
                                      dataType:"text",
                                      success:onSuccess
                            });
                        }
                         var onSuccess=function(data){
                              $("#name").append(data+"
");
                              window.setTimeOut(pull,0);
                        }
                       이러한 방식 으로 서버 측은 데이터 전달 이나 시간 초과 가 있 을 때 까지 요청 을 막 습 니 다. 서버 측은 처리 과정 에서 일정 시간 간격 으로 업데이트 여 부 를 검사 합 니 다. 업데이트 가 없 으 면 작업 을 수행 하지 않 습 니 다. 업데이트 가 있 으 면,                       데 이 터 를 되 돌려 주 고 연결 을 끊 습 니 다. 클 라 이언 트 가 데 이 터 를 처리 하고 다음 연결 요청 을 합 니 다. 이 방식 은 현재 가장 자주 사용 되 는 방식 입 니 다.
           Ajax 기반 흐름:
                   이 방식 은 XML HttpRequest 의 ready State = = 3 (즉 데이터 전송 과정 에서) 클 라 이언 트 가 연결 을 닫 지 않 고 데 이 터 를 수신 하고 처리 할 수 있 습 니 다. 그러나 IE 에서 XML HttpRequest = = 3 시 서버 쪽 을 읽 을 수 없습니다.                    되 돌아 오 는 데이터 이기 때문에 현재 IE 에 서 는 이러한 방식 (Streaming Ajax) 을 지원 하지 않 습 니 다. 서버 측은 끊임없이 클 라 이언 트 에 데 이 터 를 보 냅 니 다.
                  try{
                     var request=new XMLHttpRequest();
                  }
                 catch{
                 }
                 request.onreadystatechange=function(){
                     if(request.readystate==3) {
                        $("#name").append(request.responseText);
                     }
                 }
                 request.open("send","test.ashx",null);
                 request.send(null);
          iframe 과 htmlfile 기반 흐름 방식:
                 이 방식 은 페이지 에 숨겨 진 iframe 을 삽입 하여 src 속성 이 긴 연결 을 가리 키 도록 하 는 것 입 니 다. 그러면 서버 에서 클 라 이언 트 에 데 이 터 를 끊임없이 보 냅 니 다. 그러나 이 데 이 터 는 자바 script 코드 로 부 모 를 조작 하 는 데 사 용 됩 니 다.                레벨 페이지 의 Dom 트 리 구조 에 문제 가 있 습 니 다. IE, FireFox 의 진행 표시 줄 은 항상 불 러 오 는 상태 로 표 시 됩 니 다. 또한 IE 위 에 있 는 아이콘 은 계속 돌아 가 불 러 오 는 중 입 니 다. 하지만 Google 의 천재 들 은               "html file" 의 ActiveX 를 사용 하여 이 문 제 를 해결 하고 gmail + gtalk 제품 에 사 용 했 습 니 다.
      FlashXMLsocket 은 Flash 프로그램의 xmlsocket 인 터 페 이 스 를 이용 하여 클 라 이언 트 프로그램 에서 javascript 로 Flash 인 터 페 이 스 를 직접 호출 하여 데이터 전달 을 실현 합 니 다.
       자바 애플 트 는 클 라 이언 트 와 서버 엔 드 의 인 터 페 이 스 를 만 들 지만 자바 애플 트 가 서버 에서 돌아 온 데 이 터 를 가 져 올 수 없고 페이지 를 업데이트 할 수 없습니다.
       웹 socket 의 목 표 는 클 라 이언 트 와 서버 측의 양 방향 통신 을 실현 하 는 것 이다.

좋은 웹페이지 즐겨찾기