Aar*_*ron 6 websocket google-chrome-extension phpwebsocket
我有一个websocket客户端/服务器,可以与Firefox和Chrome 18完美配合.它不适用于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
主机:(省略这个岗位)
的User-Agent:Mozilla的/ 5.0(Windows NT的6.1; WOW64; RV:12.0)的Gecko/20100101火狐/ 12.0
接受:text/html的,是application/xhtml + xml的,应用/ XML; q = 0.9,/ q = 0.8
的Accept-Language:EN-US,连接; q = 0.5
的Accept-Encoding:gzip的,放气
DNT:1个
连接:保持活着,升级
仲丁基的WebSocket-版本:13
来源:(此帖略)
Sec-WebSocket-Key:2TKm4ozUQdNP17Lobt7IBg ==
Pragma:no-cache
Cache-Control:no-cache
升级:websocket
HTTP/1.1 101交换协议
升级:websocket
连接:升级
Sec-WebSocket-Accept:pSUB3BT9YUUd9n3mOeWY/1uVqJE =
使用Chrome 18的握手:
GET /的ChatServer HTTP/1.1
升级:网页套接字
连接:升级
主机:(省略了此篇)
来源:(省略了此篇)
仲丁基WebSocket的密钥:zuHLEC8pGvAMadarhCLXFA ==
仲丁基的WebSocket-版本:13
HTTP/1.1 101交换协议
升级:websocket
连接:升级
Sec-WebSocket-Accept:LMBSq6Bk9Kiv + zAbQlAL899pfzc =
使用Chrome 19的握手:
GET /的ChatServer HTTP/1.1
升级:网页套接字
连接:升级
主机:(省略了这个职位)
来源:(省略了这个帖子)
二段的WebSocket密钥:TbwnVcuUiqGgZn7hxvxzvQ ==
二段的WebSocket-版本:13
秒-的WebSocket的扩展:的x WebKit的放气帧
HTTP/1.1 101交换协议
升级:websocket
连接:升级
Sec-WebSocket-Accept:D45BJ + Vfydy1Upcs3Hze/nuiaS8 =
Sec-WebSocket-Extensions:
所有服务器响应都有\ r \n行结尾,并在消息末尾包含一个额外的\ r \n.
FF12和Chrome18工作 - Chrome19不起作用.在Chrome19中,服务器握手响应之后的下一个数据包是FIN/ACK.连接已关闭.
NB.我也尝试使用连字符作为Sec-WebSocket-Extensions值,但这也不起作用.
发现问题了。
首先,服务器响应中的空白 Sec-WebSocket-Extensions 条目产生了“ Invalid UTF-8 sequence in header value
”错误。删除该条目后,剩下的错误是“ A server must not mask any frames that it sends to the client.
”
事实上,我的服务器实现(PHPWebSocket 的高度修改版本)默认会屏蔽它发送的帧。更改此默认行为解决了问题,并且 websocket 连接现在可以在 Chrome 19 中使用。
将 PHPWebSocket 标签添加到此问题,因为它是该项目的问题。
归档时间: |
|
查看次数: |
7060 次 |
最近记录: |