2013-10-14 77 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 

和服務器發送的回覆:

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 

當然,在最終它總是發送 '\ r \ n'。

你知道這個迴應有什麼問題嗎? 感謝您的幫助

+0

包括更多信息。瀏覽器端會發生什麼?服務器端會發生什麼?檢查日誌。 –

+0

感謝您的反饋。在瀏覽器端,websocket對象readyState的值爲0.此外,連接的狀態爲「掛起」。我想寫一個WebSocket服務器,所以我還沒有任何日誌。 – Simon

回答

0

Sec-WebSocket-位置應該是類似ws://[host]/[uri]的東西,以「ws」而不是「http」開頭。

+0

如果您需要關於此事的幫助,請開始一個新問題。 – demongolem

0

請從響應中刪除Sec-WebSocket-Protocol頭。當客戶端沒有發送標題時將其包含在內是無效的。

也請刪除Sec-WebSocket-Location標頭。這是舊規格的東西。未在RFC 6455中使用。

0

感謝您的幫助,但我在代碼中發現了一個「錯誤」。 我用Java寫的服務器,並響應每行被

'\r' + '\n' 

結束,但它應該是

"\r\n" 

就是這樣。現在它的作品:)

相關問題