2013-10-14 66 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" 

就是这样。现在它的作品:)

相关问题