좋은 프로그래머 웹 프런트 엔드 공유 웹 소켓 프로토콜

A, 웹 소켓 프로토콜 개요

  1. 웹 소켓은 HTML5 사양 항상 통합 전면 및 후면 상태를 보장하기 위해, 프론트 엔드에 메시지를 다시 밀어 수, 웹 소켓 기술을 사용하여, 브라우저와 서버 백엔드 양방향 통신을 문제 해결을위한 새로운 기능을 도입, 기존의 비 저장 HTTP 프로토콜, 이것은이 "할 수 없다"입니다.

웹 소켓이 표시 2. 전에 브라우저 기술로 기존의 서버 측 푸시 메시지는 다음과 같습니다 등등 아약스, 플래시, 혜성, 자바 애플릿을. 예외없이,이 시간에서 최신 상태를 얻기 위해 무대를 요청하는 시간에,이다 사용 롱 폴링 기술이다. 롱 폴링 쉽게 구현할 수 있지만, 효과는 불필요한 오버 헤드를 가지고, 다시 전화를하고, 다음 설문 조사 프런트 엔드 알 필요가있을 때 성능을 보장 할 수없는 실시간가, 배경이 업데이트 나타납니다 맹인도 좋지 않습니다.

3. 웹 소켓 프로토콜은 서버와 긴 연결을 설정하는 브라우저가, 양쪽 모두가 더 이상 언제든지 서로 데이터를 전송할 수 질문을하고 클라이언트에 의해 제어 대답 할 수있는 지원하지 않습니다. 푸시 기능을 구현할 때 서버에서 클라이언트로 데이터를 전송하기 위해 주로이다.

이전 사이트 푸시 기능을 달성하기 위해 4. 사용되는 방법은 폴링이다. 폴링은 실시간 푸시 서버의 환상을주고, 서버에 브라우저에서 보낸 HTTP 요청은 서버가 다음 클라이언트 브라우저에 최신 데이터를 반환 (예를 들어, 일초) 특정 시간 간격으로 호출된다. HTTP 요청 헤더 (헤더 요청) 길이, 및 상기 데이터 전송은 단지 약간 매우 짧게 할 수 있으므로, 각 요청에 의해 소비되는 대역폭의 가장 헤더에서 소비된다. 나중에 인터넷뿐만 아니라 개선 폴링 방법에서 해당 정보는 혜성, 아약스의 사용이라고합니다. 그러나이 기술은 양방향 통신 있지만, 달성 할 수있다.

II. 웹 소켓 원리

  다음과 같이 도시 라운드 로빈 비교표에 기초하여 (폴링) 및 푸시 웹 소켓 브라우저 (브라우저)와 서버 (서버)의 상호 작용 길이 :

  웹 소켓 프로토콜을 통해 HTTP 프로토콜을 기반으로, 그래서 이후 두 사람은 공통점을 많이 가지고 있어요. 설정 또는 http 연결하기 시작 웹 소켓 프로토콜, 브라우저와 서버를 사용하는 경우 사실, 다음 HTTP의 프로토콜 변환 후 서비스와 클라이언트를 나타내는, 프로토콜 변환 과정이 핸드 셰이크 (핸드 쉐이크)라고하며, 웹 소켓하기 우리는 웹 소켓 계약을 설립하기로 합의했다. 인해 성공적인 연결을 설정하기 위해 새로운 프로토콜, 브라우저와 웹 서버 지원의 경우를 웹 소켓을, 주목해야한다. 연결의 설립, 브라우저가 웹 소켓에 HTTP으로부터 원하는 프로토콜 변환을 나타내는 몇 가지 추가 정보를 포함하여, 서버에 HTTP 요청을 전송 정상적인 상황에서. 다음과 같이 추가 정보는 실제로 요청 헤더 업데이트를 추가한다 :


발견 수있는 어린이 신발을 잘 알고 HTTP,이 더 그래서 몇 가지 악수 요청 HTTP 프로토콜과 유사하다.


오히려 구식 HTTP보다 - 나는 나를 대응 처리 지원을받는 데 도움을주기 위해 서둘러의 웹 소켓 프로토콜을 사용하는 요청을 시작한 당신에게주의 :이 같은 아파치, Nginx에 서버를 말하는 웹 소켓의 핵심입니다.


첫째, 초 - 웹 소켓 - 키는 Base64로이 값은 브라우저가 무작위로 생성되고, 인코딩하는 서버를 말한다 : 이탄, 나는 당신이 정말로 웹 소켓 보조 아니라는 것을 확인하려면, 깜박하지 않습니다.

 

그런 다음, Sec_WebSocket 프로토콜은 사용자 정의 문자열은 URL이 같은 다른 서비스 프로토콜의 요구를 구별하는 데 사용된다. 간단한 이해하기 : 오늘 내가하는 서비스를 실수 친구도하지 않습니다 싶어 ~

 

마지막으로, 초 - 웹 소켓 - 버전 초안 단계에 아직 웹 소켓 프로토콜을 처음으로, 웹 소켓 초안을 (프로토콜 버전)를 사용하는 서버를 말한다, 이상한 프로토콜의 모든 종류의,하지만 이상한 많이있다있다 뭔가 다른, 훨씬 파이어 폭스와 크롬은 클래스의 버전,하지만 큰 문제를 사용하지 않을 것을 원래의 웹 소켓 프로토콜입니다. 그러나 다행스럽게도 지금,이 결정되었습니다 - 우리 모두가 동일한 버전 사용 : 웨이터, 나는 아 → _ → 13 세 싶어요

 

그런 다음 서버는 다음과 같은 것들을 반환이 요청, 웹 소켓 그것의 성공적인 설립을 받았다고했다!

 

당신은 주요 브라우저 및 버전 현재 다음 URL에서 webscoket 프로토콜 지원을 볼 수 있습니다 :


  지원 HTML5 브라우저는 일반적으로 내장 된 JS를 제공하는 웹 소켓 객체를, 개발자는 서버와의 연결을 설정 웹 소켓이 객체를 활용할 수 있습니다. 특히 파이어 폭스, 파이어 폭스에서이 객체는 MozWebSocket입니다.

  브라우저는 JS 코드를 탐지하여 웹 소켓을 지원 할 수 있는지 여부


웹 소켓 객체는 여러 콜백 메소드를 제공합니다

연결이 성공적으로 생성되면 // 콜백

myWebSocket.onopen = 기능 (EVT) {경고 ( "열린 연결 ..."); };

서버가 다시 호출되는 메시지가 나타납니다 //

myWebSocket.onmessage = 함수 (EVT) {경고 ( "수신 메시지"를 evt.data +); };

연결이 닫힐 때 // 콜백

myWebSocket.onclose = 함수 (EVT) {경고 ( "연결 폐쇄."); };    

추천

출처www.cnblogs.com/gcghcxy/p/10949843.html