웹 기반 실시 간 통신 방안
전통 적 인 웹 방식 은 클 라 이언 트 가 요청 을 하고 서버 측 응답 방식 으로 작 동 하지만 실제 응용 에서 클 라 이언 트 는 서버 와 지속 적 인 업 데 이 트 를 유지 해 야 합 니 다. 예 를 들 어:
모니터링 시스템
주가 시스템
이 응용 프로그램 들 은 클 라 이언 트 가 요청 하지 않 고 서버 에서 실시 간 정 보 를 클 라 이언 트 에 보 내야 합 니 다.
구현 방식:
일반 폴 링
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 의 목 표 는 클 라 이언 트 와 서버 측의 양 방향 통신 을 실현 하 는 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
원생 Ajax와 jQuery Ajax의 차이점 예시 분석선언: 이번에 소개한 것은 aax와 백그라운드를 이용하여 데이터 교환을 하는 작은 예이기 때문에 demo는 서버를 통해 열어야 합니다.서버 환경은 구축하기 매우 좋다. 인터넷에서wamp나xampp를 다운로드하여 한 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.