【发布时间】:2012-05-14 11:06:48
【问题描述】:
我有一个与 Firefox 和 Chrome 18 完美配合的 websocket 客户端/服务器。它不适用于 Chrome 19 beta。我怀疑这是由于这个浏览器现在使用了我的服务器不支持的 deflate-frame 扩展。
Chrome 19 测试版在握手时发送了这个: "Sec-WebSocket-Extensions: x-webkit-deflate-frame"
我的服务器发回: "Sec-WebSocket-Extensions:"
但这不是拒绝扩展的正确方法,或者还有其他我没有发现的错误。这是握手中唯一与我从工作浏览器中看到的不同的东西。
编辑:这里有一些附加信息。这些是 Wireshark 捕获的握手。
使用 Firefox 12 的握手:
GET /chatserver HTTP/1.1
主持人:(本帖省略)
用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0
接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
接受语言:en-us,en;q=0.5
接受编码:gzip、deflate
DNT:1
连接:保持活动,升级
Sec-WebSocket-版本:13
出处:(本帖省略)
Sec-WebSocket-Key:2TKm4ozUQdNP17Lobt7IBg==
编译指示:无缓存
缓存控制:无缓存
升级:websocket
HTTP/1.1 101 切换协议
升级:websocket
连接:升级
Sec-WebSocket-Accept: pSUB3BT9YUUd9n3mOeWY/1uVqJE=
使用 Chrome 18 的握手:
GET /chatserver HTTP/1.1
升级:websocket
连接:升级
主持人:(本帖省略)
出处:(本帖省略)
Sec-WebSocket-Key:zuHLEC8pGvAMadarhCLXFA==
Sec-WebSocket-版本:13
HTTP/1.1 101 切换协议
升级:websocket
连接:升级
Sec-WebSocket-Accept: LMBSq6Bk9Kiv+zAbQlAL899pfzc=
使用 Chrome 19 的握手:
GET /chatserver HTTP/1.1
升级:websocket
连接:升级
主持人:(本帖省略)
出处:(本帖省略)
Sec-WebSocket-Key:TbwnVcuUiqGgZn7hxvxzvQ==
Sec-WebSocket-版本:13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
HTTP/1.1 101 交换协议
升级:websocket
连接:升级
Sec-WebSocket-Accept: D45BJ+Vfydy1Upcs3Hze/nuiaS8=
Sec-WebSocket-Extensions:
所有服务器响应都有 \r\n 行结尾,并在消息末尾包含一个额外的 \r\n。
FF12 和 Chrome18 工作 -- Chrome19 不工作。在 Chrome19 中,服务器握手响应之后的下一个数据包是 FIN/ACK。连接已关闭。
注意。我也尝试使用连字符作为 Sec-WebSocket-Extensions 值,但这也不起作用。
【问题讨论】:
标签: google-chrome-extension websocket phpwebsocket