현재 실시간 웹 애플리케이션 구현의 대부분은 폴링 및 기타 서버측 푸시 기술을 중심으로 이루어지며, 그 중 가장 유명한 것은 Comet입니다. Comet 기술을 사용하면 서버가 비동기 방식으로 데이터를 클라이언트에 적극적으로 푸시할 수 있습니다.
폴링을 사용할 때 브라우저는 주기적으로 HTTP 요청을 보내고 즉시 응답을 받습니다. 브라우저는 서버에 요청을 보내고 서버는 이를 일정 시간 동안 열어 두어 시나리오를 해결합니다. 브라우저는 전체 HTTP 요청을 보내지만 서버는 계속 업데이트되고 무기한 열려 있는 열린 응답을 보내고 유지합니다.
위의 세 가지 방법은 실시간 데이터 전송 시 HTTP 요청 및 응답 헤더가 포함되며, 추가적이고 불필요한 헤더 데이터가 다량 포함되어 전송 지연이 발생합니다.
1. HTML5 WebSocket의 해석
1. 웹소켓 핸드셰이크
WebSocket 통신을 설정하기 위해 클라이언트와 서버는 초기 핸드셰이크 중에 HTTP 프로토콜을 WebSocket 프로토콜로 업그레이드합니다. 연결이 설정되면 WebSocket 메시지는 전이중 모드로 클라이언트와 서버 간에 주고받을 수 있습니다.
참고: 네트워크에서 각 메시지는 0x00바이트로 시작하고 0xFF로 끝나며 중간 데이터는 UTF-8 인코딩 형식을 사용합니다.
2. 웹소켓 인터페이스
WebSocket 프로토콜 정의 외에도 JavaScript 애플리케이션용 WebSocket 인터페이스도 정의됩니다.
참고: ws:// 및 wss:// 접두사는 각각 WebSocket 연결과 보안 WebSocket 연결을 나타냅니다.
2. HTML5 웹소켓 API
이 섹션에서는 HTML5 WebSocket을 사용하는 방법을 설명합니다
1. 브라우저가 지원하는지 확인하세요
window.WebSocket을 사용하여 브라우저가 이를 지원하는지 확인하세요.
2. API의 기본 사용법
a. WebSocket 객체 생성 및 WebSocket 서버 연결
b. 이벤트 리스너 추가
WebSocket은 비동기 프로그래밍 모델을 따르므로 서버를 적극적으로 폴링하지 않고 이벤트가 발생할 때까지 기다리기만 하면 됩니다. 따라서 이벤트를 수신하려면 콜백 함수를 추가해야 합니다.
WebSocket 객체에는 열기, 닫기, 메시지라는 세 가지 이벤트가 있습니다. open 이벤트는 연결이 설정될 때 발생하고, message 이벤트는 메시지 수신 시 발생하며, close 이벤트는 WebSocket 연결이 종료될 때 발생합니다.
c. 메시지 보내기
소켓이 열려 있으면(즉, onopen 리스너를 호출한 후와 onclose 리스너를 호출하기 전) send 메서드를 사용하여 메시지를 보낼 수 있습니다.
ws.send("Hello World");
3. HTML5 웹소켓 애플리케이션 예시
이 섹션에서는 앞서 설명한 Geolocation 인터페이스를 결합하여 웹 페이지에서 직접 거리를 계산하는 애플리케이션을 만듭니다.
1. HTML 파일 작성
<머리>
브라우저가 HTML5 위치정보를 지원하지 않습니다
브라우저가 HTML5 웹 소켓을 지원하지 않습니다