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字节的差别),显著减少了无效字节的传送。

在有了更高效的浏览器和服务器通信协议的前提下,带宽利用率有望大幅度提高,这时候内容更为丰富的新一代HTML5规范适时登场了,它将替代目前的HTML 4XHTML 1。Web Socket作为HTML5的原生支持模块出现。不过到目前为止HTML5还只是草案(draft specification),业界有部分人认为HTML5到成为通行标准还需要很长时间,但是另一部分人(包括我在内)相信HTML5会在今年内成为W3C的推荐标准,在2011年得到广泛应用。

现在的浏览器开发市场格局已经与以前大不相同了,Chrome发展极其迅速,Firefox成长稳健,Safari随着苹果的走强也呈现上升趋势,Opera有着忠诚的用户,这些都让IE的份额不断下滑。根据NetApplication今天(2010年5月6日)最新发布的浏览器市场份额调查数据,Chrome的市场占有率已经上升到6.7%,Firefox也上升到24.59%,IE下滑至59.95%。

当年微软用IE的精兵强将打败网景之后,逐渐取得了绝对垄断,之后就将精锐的IE开发团队抽调分散到了其他部门,大好江山就这样停滞在IE6这个傻逼版本好些年。最近愈演愈烈的浏览器市场竞争明显让IE开发加快了进度,也是在今天,IE9发布了第二个预览版,宣布支持HTML5的GPU硬件加速。昨天才发布的Chrome 5 Beta版,进一步增加了对HTML5新特性的支持(drag-and-drop capabilities和Geo-location信息)。苹果跟Adobe势不两立之后,通过HTML5在其iPhone OS中实现网页视频和互动已经在4月初的keynote iPhone OS 4.0发布会上由乔帮主不停地用amazing,fantastic形容过了。Chrome和Safari使用的都是由苹果创立的HTML5开源渲染引擎WebKit。Firefox,Opera在支持HTML5新特性上也一如既往走在前列。 短时间内,如此频繁的演变让人对主流浏览器全面拥抱HTML5的前景毫不怀疑。 但是Web Socket — HTML5的原生支持者呢? 浏览器客户端方面,现在支持Web Socket的只有最新的Chrome和Safari,Mozilla计划在下一版本Firefox 3.7中提供支持。

移动浏览器方面,目前仅发布开发者版本的iPhone OS 4.0的Safari已经支持Web Socket,完全向用户发布之后就就可以在iPad,iPhone和iTouch中使用了。相信同样使用WebKit的Android很快就会提供支持。这里有一个可爱的小脚本可以测试你当前的服务器是否支持Web Socket。

服务器端方面,最早小巧可爱的Jetty从7.0.1版本开始支持Web Socket,现在还有由Chrome的开发版本Chromium的团队开发的pywebsocket提供对Apache Http Server的Web Socket扩展;Caucho’s Resin包含有对Web Socket的实现,JBoss的Netty有一个支持Web Socket的补丁;Kaazing Open Gateway是一款开源的Web Socket解决方案,一方面提供Web Socket服务器,可以与其他使用Web Socket规范的服务器(比如Gmail服务器)直接用全双工方式通信,另一方面他们提供了一个可以在当前所有web浏览器中模拟Web Sockets的JavaScript类库。Kaazing可谓是目前致力推广Web Socket HTML5的生力军,大量相关的介绍文章,报告,培训都是由他们提供的。Kaazing提供的开源技术,保证了即使在不是所有的浏览器都完全支持Web Socket的当前局面下,开发人员可以着手开发Web Socket HTML5应用,为美好的将来做准备。 除此以外还有基于Perl,Ruby和php的其他服务器方案,可以参考Web Socket的Wikipedia页面

总结,从当前的情况来看,我对Web Socket HTML5在短期内获得快速发展充满信心。当然前景完全取决于Apple,Google和微软几大巨头的竞争和互动。但如果说这是一只股票的话,我认为现在正是大力买进的时候了。这也是我选择在橙子公司做这个实习的主要原因。 哈哈,不过新的工作环境也很令人开心。非常宽敞的办公室,和另外一个中国实习生和一个外包公司派过来的法国开发员一起共享,老板在楼下没事完全够不着我。上下班时间很宽松,餐厅的膳食精良,价格便宜。最重要的是法国同事和中国同事都很可爱。

未来的四个月应该可以愉快的度过。

Advertisements

Tagged: , , , , , , , , , , , ,

§ 11 Responses to Web Socket和HTML5发展近况

  • forresty says:

    你的博客RSS输出后格式没掉了啊

  • leon says:

    对,RSS到阅读器格式没了~读起来比较累~
    我有个问题,为啥你们在文章中做链接,不喜欢用”_blank”?
    国内貌似都是新标签的习惯~~另外国内的IE份额那可还是相当令人发指啊

    • NoTor says:

      改好了,还把默认feed输出改成了feedburner。我是偷懒,没有为用户着想,经你提醒,现在装了这个插件,把文章中的链接都替换成了target blank。不过值得提醒一下的是,这种写法是不符合w3c的XHTML Strict规范的,应该用rel=external配合一个javascript.

  • 老郭 says:

    对于 HTML5 的前景的乐观,可能需要慎重。
    由于微软的存在,总是在战略性得拖慢 HTML5 的发展进程。

    倒是在移动浏览器领域,微软的影响力几近可以被忽略。
    所以也许在智能手机上,我们有可能在先于桌面而得到一个纯净统一的 HTML5 环境。

    • NoTor says:

      微软IE的占有率依然很高,所以微软战略确实还有很大的影响力。但是从IE9最新动向来看,HTML5正在逐步被微软接受,下一个IE9的预览版将支持html video,虽然Siverlight和Flash定位接近,都会受到HTML5的冲击,但微软或许愿意通过支持HTML5在未来将维持一段时间的多技术共生阶段打压对手Flash。另外微软为了推销Silverlight建立的IIS Media已经可以识别Apple的设备,所以可以适应性地将格式转换成QuickTime支持的streaming,这对和Flash决裂的Apple来说也是一个备用选择。
      Windows Mobile 7今年要推出,微软在移动领域的影响力有望增强。

  • Amanda says:

    全都是技术,看不懂
    飘走
    还强迫人写名字和邮箱。。。。。。

  • z楠 says:

    Windows Mobile 7今年要推出,微软在移动领域的影响力有望增强?

    求解释,是指已发布的phone7吗?

    • NoTor says:

      是啊,就是正名为Windows Phone 7的Windows Mobile 7. 采用这个操作系统的手机恐怕要到今年圣诞节才会上市,拭目以待吧~

  • Tom says:

    内容不错,希望能够多多看到强力的文章
    呵呵

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

What’s this?

You are currently reading Web Socket和HTML5发展近况 at Notor.

meta

%d bloggers like this: