2010-06-29 8 views
1

누구든지 Hickson의 2010 년 5 월 초안 -hixie-thewebsocketprotocol-76 WebSocket 프로토콜을 읽었습니까? 내가 8181에서 수신 TCP 포트가있는 경우 나 크롬에서 위의 .htm 파일을로드 할 때HTML5 : 최신 웹 소켓

<html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <script type="text/javascript"> 
     var socket = new WebSocket('ws://localhost:8181/websession'); 
     socket.onopen = function() { 
      alert('handshake successfully established. May send data now...'); 
     }; 
     socket.onclose = function() { 
      alert('connection closed'); 
     }; 
    </script> 
</head> 
<body> 
</body> 
</html> 

, 이것은 내가 얻을 요청입니다 : 여기

은 .htm 파일의 소스입니다

GET /websession HTTP/1.1 
Upgrade: WebSocket 
Connection: Upgrade 
Host: localhost:8181 
Origin: null 
[\n] 

(여기서 [\ n을] CRLF 문자입니다.)

나는이 핸드 셰이크 오프너 무엇 반환해야? 초안 hixie-thewebsocketprotocol-76 쇼 :

HTTP/1.1 101 WebSocket Protocol Handshake 
Upgrade: WebSocket 
Connection: Upgrade 
Sec-WebSocket-Origin: http://example.com 
Sec-WebSocket-Location: ws://example.com/demo 
Sec-WebSocket-Protocol: sample 

8jKS'y:G*Co,Wxa- 

이 응답은 그러나 화재 socket.onclose됩니다.

답변

2

드래프트 76 Sec-WebSocket-WebSocket- 응답 헤더를 변경하고, 일부 불필요한 추한 Key 헤더 요청 바디 암호화 재료를 첨가 8jKS'y:G*Co,Wxa-가 응답되는. 그러나 이는 초안에 포함 된 예제에 대한 올바른 응답 일뿐입니다. 다른 요청에 대해 특정 문자열을 반환하는 것은 좋지 않습니다. 새 프로토콜을 구현하는 방법은 this post을 참조하십시오.

최신 개발 빌드를 사용하지 않는 한 Chrome/Chromium은 이전 초안 75 프로토콜 (사용자가 게시 한 요청과 같이)을 계속 사용하며 해당 구현 서버를 구현하지 않습니다. 새로운 프로토콜. 자세한 내용은 Chromium blog을 참조하십시오. 이전/현재 Chrome 버전을 지원해야하는 경우 효과적으로 두 개의 WebSocket 프로토콜을 구현해야합니다.

이것은 아직 표준화되지 않은 프로토콜을 대상으로 개발할 때 항상 위험합니다. WebSocket이 완성 될 때까지 성가신 interinoperability를 기대할 수 있습니다. 그때까지 기다리지 않는 것이 좋습니다.

(실제로 스펙을 읽고 이해할 수없는 파싱 알고리즘을 사용하여 정확히 무엇이 바뀌 었는지 알아내는 것은 좌절감을 안겨주는 운동입니다. 일반적인 BNF 스타일 사양 RFC가 좋아하는 것처럼 Hixie가 C로 파서를 작성한 다음 코드를 영어로 변환하는 자동화 된 도구를 작성한 것입니다. C는 더 읽기 쉬운 TBH였습니다.)

0

noVNC에 포함 된 wsproxy가 참조. 그것은 투명하게 WebSocket v75 및 v76 클라이언트를 모두 지원합니다.

wsproxy는 일반적인 웹 소켓 대 TCP 소켓 프록시입니다. noVNC에 포함 된 wsproxy의 C 및 Python 버전이 있습니다.

http://github.com/kanaka/noVNC/tree/master/utils/

또한, 단지 흥미있는 일을 유지하기 위해, 최신 (어떤 버전은 아직) 초안 제안은 (특히 사물이 프레임 방식을 변경) 다시 일을 변경하지 : http://www.whatwg.org/specs/web-socket-protocol/