Chrome 20 websocket握手

m4r*_*cek 5 php google-chrome websocket

我正在使用lemmingzshadow(web)的PHP Websocket服务器.一切都很好,直到现在.

更新到chrome 20后,如果我想与服务器进行握手,则以此错误结束

Error during WebSocket handshake: Sec-WebSocket-Protocol mismatch 
Run Code Online (Sandbox Code Playgroud)

来自chrome 20的标题

GET /demo HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: gomokulive.eu:8001
Origin: http://www.gomokulive.eu
Sec-WebSocket-Key: s+AMQQu4Q10xH2AKy49byg==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
Run Code Online (Sandbox Code Playgroud)

标题发回:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: dMCVYKkF5VRrIouWFW7EYdvfD28=
Sec-WebSocket-Protocol: demo
Run Code Online (Sandbox Code Playgroud)

我认为问题在于来自Chrome 20的"Sec-WebSocket-Extensions:x-webkit-deflate-frame"标题.

知道怎么让它再次运作吗?

kan*_*aka 15

服务器违反了WebSocket协议.Chrome可能只是在版本20中更正确地遵守标准,并且揭示了服务器中的错误.

问题是服务器在响应中发送回"Sec-WebSocket-Protocol"标头,但这仅在客户端在请求中发送相同标头时才合法.如果客户端未发送Sec-WebSocket协议,则服务器应省略响应中的标头.

请参阅rfc6455的第4.2.2节中的/ subprotocol/description