注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

拥有自己的梦想,跟随心的召唤

平凡是福

 
 
 

日志

 
 

HTML5 WebSocket 开发参考及实践记录  

2015-01-21 16:47:53|  分类: Web |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一) W3C WebSocket API 标准进展情况
各个草案协议的版本号:http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol
Working Draft-20110929 http://www.w3.org/TR/websockets/ 
http://www.w3.org/TR/2011/WD-websockets-20110419/
http://www.w3.org/TR/2009/WD-websockets-20091222/
http://www.w3.org/TR/2009/WD-websockets-20091029/
http://www.w3.org/TR/2009/WD-websockets-20090423/

二) Jetty8的WebSocket行为
1) WebSocketServlet的声明必须放在所有Servlet的前面,否则WebSocketServlet的session会与其他的HttpServlet的session不同
2) WebSocketServlet的超时并不是使用HttpServlet配置的超时时间,两者的超时时间是独立的
实测Jetty 8.0.4的WebSocketServlet超时时间为5分钟(Chrome15、Firefox8.0、Safari5.1)
Jetty8启动时有40秒左右的延时,不知什么原因,降到Jetty7就没问题了! 从7.4版开始Jetty的WebSocket接口完全变了,但仍有问题,新的WebSocket接口需要从7.5版开始才能正常使用。

*) 浏览器对WebSocket的支持测试
http://websocketstest.com/ 可以查看到支持的协议的版本。

*) 各种浏览器WebSocket的头部信息:
new WebSocket(“ws://localhost:8082/ws","chat");
1) Chrome 15.0.874.120 m (Win7 64位) -- Ctrl+Shift+I
Request URL:ws://localhost:8082/ws
Request Method:GET
Status Code:101 Switching Protocols
Request Headers
Connection:Upgrade
Cookie:JSESSIONID=z0bg54nxxxihisn41pb6t4yh
Host:localhost:8082
Sec-WebSocket-Key:syIz4QCa2ZiAJUF3be8VUA==
Sec-WebSocket-Origin:http://localhost:8082
Sec-WebSocket-Protocol::chat
Sec-WebSocket-Version:8
Upgrade:websocket
(Key3):00:00:00:00:00:00:00:00
Response Headers
Connection:Upgrade
Sec-WebSocket-Accept:G0PCrjLbjTVAtcdzfGdUNcXmRBQ=
Sec-WebSocket-Protocol:chat
Upgrade:WebSocket
(Challenge Response):00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
2) Firefox 8.0 (Win7 64位) -- Firebug 1.8.4
从FireFox6开始支持WebSocket,名为MozWebSocket。
响应头信息
Upgrade WebSocket
Connection Upgrade
Sec-WebSocket-Accept lhpmFw9rl4279/q1y5OM3qKph5s=
Sec-WebSocket-Protocol chat
请求头信息
Host localhost:8082
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language zh-cn,zh;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7
Connection keep-alive, Upgrade
Sec-WebSocket-Version 8
Sec-WebSocket-Origin http://localhost:8082
Sec-WebSocket-Protocol chat
Sec-WebSocket-Key f6oFfWztg2gMhGK7gSmVBA==
Cookie JSESSIONID=11d5m3zpr2wx01ama2gj3h8fbb
Pragma no-cache
Cache-Control no-cache
Upgrade websocket
3) Safari 5.1(7534.50) (Win7 64位) -- Ctrl+Alt+I
     从5.0开始支持WebSocket
请求 URL:ws://localhost:8082/ws
请求方法:GET
状态代码:101 WebSocket Protocol Handshake
请求标头
Connection:Upgrade
Cookie:JSESSIONID=1vtvyzl6oz54t1d3wf0um4ncj
Host:localhost:8082
Origin:http://localhost:8082
Sec-WebSocket-Key1:#V32Y 0`J1,y3 9 y ;19J^30h
Sec-WebSocket-Key2:41945A 708~21
Sec-WebSocket-Protocol::chat
Upgrade:WebSocket
(Key3):CF:65:73:9E:5E:B3:73:FF
响应标头
Connection:Upgrade
Sec-WebSocket-Location:ws://localhost:8082/ws?sid=1vtvyzl6oz54t1d3wf0um4ncj&userId=12&userName=%E5%B0%8F%E6%98%8E
Sec-WebSocket-Origin:http://localhost:8082
Sec-WebSocket-Protocol:chat
Upgrade:WebSocket
(Challenge Response):29:87:9E:21:EC:15:FE:96:12:61:FB:A0:A9:E4:D7:AB
4) Opera 11.52 (Win7 64位)
    从Opera 10.7和11.0预览版开始支持websocket,但从11正式版开始默认没有开启,需要用户手动开启。开启方法:地址栏进入opera:config,在"Preferences Editor"中展开"User Prefs",勾选"Enable WebSockets"并保存,重启Opera即可。
    Dragonfly看不到ws协议的请求,不知怎样查看!

5) IE9
IE9不支持WebSocket,期待IE10开始支持吧,微软的html5实验室有相应的WebSocket实现,可以去瞄一瞄 http://html5labs.interoperabilitybridges.com/


参考:
  评论这张
 
阅读(615)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017