2013-10-14 5 views
-1

Websocket 서버를 썼습니다. 나는 모든 것이 좋은 것을 돌려 준다고 생각한다. 아마도 나는 뭔가를 놓친다.borwser가 WebSocket 서버에 연결할 수없는 이유는 무엇입니까?

GET /app HTTP/1.1 
Upgrade: websocket 
Connection: Upgrade 
Host: pm.local:4444 
Origin: http://pm.local 
Pragma: no-cache 
Cache-Control: no-cache 
Sec-WebSocket-Key: dkX2mQo3cBVA0DMQ7m9oTw== 
Sec-WebSocket-Version: 13 
Sec-WebSocket-Extensions: x-webkit-deflate-frame 
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36 

서버가 reponse 보내 : 이 브라우저가에 보내는 것입니다 물론

HTTP/1.1 101 WebSocket Protocol Handshake 
Upgrade: WebSocket 
Connection: Upgrade 
Sec-WebSocket-Origin: http://pm.local 
Sec-WebSocket-Location: http://pm.local/app 
Sec-WebSocket-Accept: KrfNVY/hsidqg2HX7YBdXHD/SQM= 
Sec-WebSocket-Protocol: sample 
Access-Control-Allow-Credentials: true 
Access-Control-Allow-Headers: content-type 
Access-Control-Allow-Origin: http://pm.local 

, 항상 전송 끝에 '을 \ 연구 \ n'을.

이 응답의 문제점을 알고 있습니까? 도움을 주셔서 감사합니다

+0

더 많은 정보를 포함한다. 브라우저 측에서 어떤 일이 발생합니까? 서버 측에서 어떤 일이 발생합니까? 로그를 확인하십시오. –

+0

의견에 감사드립니다. 브라우저 측에서는 websocket 객체 인 readyState의 값은 0입니다. 또한 연결 상태가 "보류 중"입니다. WebSocket 서버를 작성하려고 했으므로 아직 로그가 없습니다. – Simon

답변

0

Sec-WebSocket-Location은 "http"대신 "ws"로 시작하는 ws://[host]/[uri]과 같아야합니다.

+0

문제에 대한 도움이 필요하면 새로운 질문을 시작하십시오. – demongolem

0

응답에서 Sec-WebSocket-Protocol 헤더를 제거하십시오. 클라이언트가 헤더를 보내지 않았을 때 포함시키는 것은 무의미합니다.

Sec-WebSocket-Location 헤더도 제거하십시오. 오래된 스펙의 물건입니다. RFC 6455에서는 사용되지 않습니다.

0

도움을 주셔서 감사합니다. 그러나 코드에 "버그"가 있습니다. 내가 자바로 서버를 작성 및 응답의 모든 라인은

'\r' + '\n' 

에 의해 종료되었다하지만

"\r\n" 

해야 그리고 그게입니다. 지금 그것은 작동한다 :

관련 문제