Web Socket和HTML5发展近况

May 6, 2010 § 11 Comments

刚刚开始在橙子公司为期4个月的实习,关于最近非常热门的Web Socket协议html5标准草案的一些应用原型开发,那么就来谈谈这个吧。

Web Socket其实是一个老早就应该实现推广的通信协议。现在的浏览器和服务器之间的通信,都是采用半双工(half-duplex)的方式,通常需要浏览器向服务器发出一个http request,服务器才会响应给予数据作为回应。服务器端只有在某些特殊实现中才有能力向客户端push数据。 那么对于一些需要实时更新内容的情况,比如通过网页显示实时(或者接近实时)股票价格,要么通过轮询(polling),每隔几秒向服务器请求更新数据;要么用(long polling)的办法,浏览器每次接到服务器的回应就再次向服务器发出一个http request,而服务器端在收到后保持等待,直到相关的数据(比如股票价格)更新了,再把更新的结果作为回应发给浏览器,之后反复,这样浏览器相当于一直保持监听服务器端内容变化的状态。 很明显,第一种方式会把信息传输浪费在不断的发送http request上,长长的header部分被不断重复,浪费带宽。第二种方式不会浪费带宽,可以接受,Comet技术通常就是采用Ajax实现的long polling方式模拟全双工的通信的,streaming是适用于其他情况(比如在线播放视频)的另一种方式。

而Web Socket实现了真正的浏览器和服务器间全双工通信,在这一协议规范下,服务器的push是很自然的通信行为。同polling相比,Web Socket连接一旦建立,只有在有必要的时候才发送帧(trame)通信,因此高效得多。即使与long polling相比,通信的次数虽然一样多,但是Web Socket的帧头的标记性部分也比long polling的request的header部分简洁得多(几个字节与几K字节的差别),显著减少了无效字节的传送。

« Read the rest of this entry »

Advertisements

Where Am I?

You are currently browsing entries tagged with WebSocket at Notor.