2015第14周日WebSocket

清明时节雨纷纷,路上行人欲断魂,借问酒家何处是?牧童遥指杏花村。每次清明都不禁想起杜牧这首诗缅怀先人,此时第一句写时间天气,第二句写人物心情,第三句写解决方法,第四句给出解决方案,脍炙人口。

刚没事看了websorket的相关内容:

1)、WebSocket介绍

WebSocket protocol 是HTML5一种新的协议,它实现了浏览器与服务器全双工通信(full-duplex)。在浏览器中通过http仅能实现单向的通信,comet可以一定程度上模拟双向通信,但效率较低,并需要服务器有较好的支持; flash中的socket和xmlsocket可以实现真正的双向通信,通过 flex ajax bridge,可以在javascript中使用这两项功能. 可以预见,如果websocket一旦在浏览器中得到实现,将会替代上面两项技术,得到广泛的使用.面对这种状况,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并达到实时通讯。 在JavaEE7中也实现了WebSocket协议。 HTML5 Web Sockets规范定义了Web Sockets API,支持页面使用Web Socket协议与远程主机进行全双工的通信。它引入了WebSocket接口并且定义了一个全双工的通信通道,通过一个单一的套接字在Web上进行操作。HTML5 Web Sockets以最小的开销高效地提供了Web连接。相较于经常需要使用推送实时数据到客户端甚至通过维护两个HTTP连接来模拟全双工连接的旧的轮询或长轮询(Comet)来说,这就极大的减少了不必要的网络流量与延迟。 要使用HTML5 Web Sockets从一个Web客户端连接到一个远程端点,你要创建一个新的WebSocket实例并为之提供一个URL来表示你想要连接到的远程端点。该规范定义了ws://以及wss://模式来分别表示WebSocket和安全WebSocket连接。一个WebSocket连接是在客户端与服务器之间HTTP协议的初始握手阶段将其升级到Web Socket协议来建立的,其底层仍是TCP/IP连接。 WebSocket Hybi草案12的地址:http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-12,可以以此为入口访问其它的草案。

2)、优点

a)、服务器与客户端之间交换的标头信息很小,大概只有2字节;

b)、客户端与服务器都可以主动传送数据给对方;

c)、不用频率创建TCP请求及销毁请求,减少网络带宽资源的占用,同时也节省服务器资源;

3)、WebSocket数据帧的介绍

a)、草案版本00到草案版本05之间,详细可以查看草案文档,解码编码可以看见Netty的WebSocketFrameDecoder和WebSocketFrameEncoder实现;

b)、草案版本06到现在最新的草案17,介绍参见文章:http://blog.csdn.net/fenglibing/article/details/6852497

4)、WebSocket不同版本的几种握手方式

a)、无安全key、最老的WebSocket握手协议的实现(Flash);

b)、带两个安全key请求头的后端握手实现;

c)、带一个安全key请求头的后端握手实现; 参见:http://blog.csdn.net/fenglibing/article/details/7100070

5)、WebSocket可以穿越防火墙吗? WebSocket使用标准的80及443端口,这两个都是防火墙友好协议,Web Sockets使用HTTP Upgrade机制升级到Web Socket协议。HTML5 Web Sockets有着兼容HTTP的握手机制,因此HTTP服务器可以与WebSocket服务器共享默认的HTTP与HTTPS端(80和443)。

6)、Web Sockets与代理服务器交互 代理服务器的问题:

a)、HTTP代理服务器可能会选择关闭流或闲置的WebSocket连接,因为它们看起好像是尝试连接一个没有回应的HTTP服务器;

b)、代理服务器可能会缓冲未加密的HTTP响应,这将会对HTTP响应流带来不可估计的延迟;

c)、未加密的WebSocket连接(ws://开头的请求)服务器时,如果中间存在透明代理服务器,连接可能会失败,或者发送消息会失败;而加密的WebSocket连接在存在透明代理服务器的情况下成功的机率会比较大; 关于代理详细参见:http://www.infoq.com/cn/articles/Web-Sockets-Proxy-Servers

7)、 WebSocket经由浏览器本身实现后,在Web端的实现就非常的简单,只需要简单初使化一个WebSocket组件,并且增加onopen、onmessage、onclose等事件的处理即可。

部分摘录:http://blog.csdn.net/fenglibing/article/details/7108982

时间: 2024-10-29 04:36:01

2015第14周日WebSocket的相关文章

Hadoop自测题及参考答案(持续更新中--2015.6.14)

单选题 1.与其他几项不同的是 A. Mesos B. Mongodb C. Corona D. Borg E. YARN 注:其他几项都是资源统一管理系统或者资源统一调度系统,而 Mongodb一种非关系型数据库. 2.[java基础] 以下不属于线程安全的数据结构是 A. HashMap B. HashTable C. CopyOnWriteArrayList D. ConcurrentHashMap 3.hadoop2.x采用什么技术构建源代码 A. ant B. ivy C. maven

Murano Weekly Meeting 2015.07.14

2015.07.14 会议摘要 主持人:Kirill Zaitsev, core from Mirantis periodic nightly builds,然后通过mailing List发布出来,最终没有结论通过哪一个mailingList发布出来 1.yaql1.0 BP Action: kzaitsev从slagun处接手yaql1.0 BP with client and dashboard tasks. JS linting jobs (kzaitsev_mb, 17:32:05)

MyEclipse 2015 CI 14版来啦~带下载链接

经过两个月的努力,MyEclipse再次更新新版本2015 CI 14,此次更新又有很多新功能不容小视哦! 支持Web和Node.jsd的JavaScript Debugger调试器,新版本功能更加强大,在MyEclipse调试web应用程序变得更方便.调试器支持断点.变量和表达式. 类的动态预加载用Hot Reload功能在app 服务器上进行更改.这个功能可以帮助你节省很多时间,它既支持normal模式也支持debug模式,并且兼容Tomcat和Weblogic servers. REST

MyEclipse 2015 CI 14发布(附下载)

支持Web和Node.jsd的JavaScript Debugger调试器,新版本功能更加强大,在MyEclipse调试web应用程序变得更方便.调试器支持断点.变量和表达式. 类的动态预加载用Hot Reload功能在app 服务器上进行更改.这个功能可以帮助你节省很多时间,它既支持normal模式也支持debug模式,并且兼容Tomcat和Weblogic servers. REST Inspect提供可视化视图,这个功能让你发现.创建和测试端点.清爽的界面可以让你快速创建端点,并且在JQu

2015第14周二

今天调试程序时发现自己犯了一个很弱智的错误,先把实体类保存到数据库中再修改它的某个属性,结果当然修改后的属性值没保存到数据库中,赶紧调整顺序后解决,之前写那端程序时太不小心了,惭愧.今天用sql语句更新一个列的值加1时发现总不成功,后来看该列值为null,用它做加法当然不行,然而sql语句也没报错误,后来把列默认值设为0后解决. 今天三月最后一天,2015第一个季度完了,第二个季度要更加努力进步.工作.生活.

2015第35周日

今天下午各种匆忙差错看了终结者5,感觉很不错,虽然不少情节画面之前也看到过,但至少从头到尾看懂也看明白也老过瘾了,回来后又大概看了1-4,感觉5作为重启之作还是很不错的,希望后续能拍的更好. 洞察力.知识网络化等能力增长的确跟肌肉增长原理差不多.肌肉增长需要大量的刻意训练来刺激肌纤维的生长,而洞察力等能力也需要大量的思考.练习和探究,来刺激新的大脑神经突触的增长. 所以,如何构建庞大的知识网络?并不是要单纯多看书多接触世界就行了,而是有“好奇心”,总是想建立联系,想用知识提升现在的工作,想问“为

2015第10周日CSS—3

CSS各种居中方法 CSS的居中有水平居中和垂直居中,这两种居中又分为行内元素居中和块级元素居中,不同的居中用不同方法. 水平居中 1.行内元素水平居中(文本,图片) 给父层设置 text-align:center; 可以实现行内元素水平居中. [code] <!DOCTYPE HTML> <html lang=&qu CSS的居中有水平居中和垂直居中,这两种居中又分为行内元素居中和块级元素居中,不同的居中用不同方法. 水平居中 1.行内元素水平居中(文本,图片) 给父层设置 t

2015第30周日

成功是一种习惯,失败也是一种习惯.为何会成功?因为坚持不懈.为何会失败?因为放弃.坚持和放弃都是一种习惯.良好的习惯也就是我们走向成功的巨大力量,无怪乎有人说成功与失败的最大区别来自于不同的习惯.一天,一位老师与他年轻的学生一起在树林里散步.老师突然停下来,并仔细看着身边的四株植物.第一株植物是一棵刚刚冒出土的幼苗:第二株植物已经算得上挺拔的小树苗了,它的根牢牢地盘踞在肥沃的土壤中:第三株植物已然枝叶茂盛,差不多与年轻学生一样高大了:第四株植物是一棵巨大的橡树,年轻学生几乎看不到它的树冠. 老师

2015第14周五Tomcat版本

首先看tomcat官方文档,列出的不同版本的主要差别: Servlet Spec JSP Spec EL Spec WebSocket Spec Apache Tomcat version Actual release revision Support Java Versions 4.0 TBD (2.4?) TBD (3.1?) TBD (1.2?) 9.0.x None 8 and later 3.1 2.3 3.0 1.1 8.0.x 8.0.21 7 and later 3.0 2.2