一起来用Websocket(一)开篇 Websocket!Socket在HTML5复活

一起来用Websocket(一)开篇 WebsocketSocketHTML5复活

   前言 

       HTML5中有一个比较好用的特性,就是Websocket。现在已集成在chrome的较新版本中。由于前段时间在项目中有用到Websocket,感到Websocket真是HTML5中比较强大的功能。现在抽点时间,总节一下在.net中使用Websocket 要注意的地方。同时,由于园子里关于Websocket的文章不多,希望能起到抛砖引玉的作用,希望能和大家一起讨论更好的实现方式,形成更好的应用。

      如果可以的话,希望能形成我们.net社区自己的Websocket 框架(类似jWebsocket)。最近,业余时间我也时行了jWebsocket.net版本的开发和测试工作,希望能借这个专题,把这个框架和大家一起完善起来,也希望有兴趣的朋友加入一同开发,相信我们能得很多。

下面言规正转,开始谈Websocket吧。

   示例 

     下面有一个类似在线留言的例子:http://HTML5demos.com/web-socket

大家一眼能看出来吧,这个没啥特别的呀,不是和AJAX差不多吧。我用JQuery或者Xmlhttprequest或其它js框架都可以很快写出来呀。其实,Websocket也可以被拿来当用AJAX框架来用,不过,这样太大材小用了。这个示例中有几个细节:

第一、  初始,连接未建立。


上图所示”Not connected”.表示,连接还未建立。

第二、  连接建立。


等一段时间后,原来灰色部分会变成绿色的“Socket Open”,表示连接已经建立了。

大家也可能注意到,我在文本框中输入了内容后,按回车后,在最下面的部份就出来了我发的内容。

第三、  Socket open 常连接。

我们发现,我们一段时间不退出,状态还是绿色的“Socket Open”。说明,连接还是一直存在的。其次,这里使用的是Socket,也就是说,刚才的留言板是在线的,实时的留言板,相当于一个聊天室,大家都可以看到你在线的状态。是不是很令人激动。没错,我们的socket又复活了,在后台,使用的就是socket的程序,其语言可以是JavaC#PHP等其它可以监听或编写socket应用的语言。

好,上面的例子过后,我们来正式对比一下WebsocketHTTP的区别吧:

规定平台Websocket服务器和谷歌浏览器,或Websocket服务器与ws客户端程序之间数据传送的格式协议,软件设计应按照此协议进行。

    HTTP的三个问题:

    (1)为一个WEB客户端潜在的建产多个TCP连接。

    (2)有一个大的HTTP头,以满足HTTP协议。

    (3)客户端的脚本必须为输入连接和输出连接建立一个映射,以确定回复。

    (4)基于请求-响应模式,HTTP服务端不能主动推送(push)数据到客户端。

   Websocket的三个好处:

(1)       一个WEB客户端只有一个TCP连接。

(2)       Websocket服务端可以推送数据到web客户端.

(3)       轻量级的头,减少数据传送量

(4)       服务端可以主动推送数据到客户端

(5)       已成功应用于游戏、股票交易等用多用户实时系统中。

(6)       支持多客户端,Web客戶

(7)       客户端开发接口简单

 

   Websocket客户端开发接口

      如下图所示:

提供下面三个接口 

      onopen: 当接口打开时

onmessage: 当收到信息时

onclose: 当接口关闭时

上面的几个方法已在chrome浏览器中得到支持,开发接口也相对简单。

 


   本篇总结

1.    Websocket就是借着 HTML5在浏览器中加了一个socket通信程序的客户端。你在安装浏览器的时候,默认装了一个客户端,可以向服务端请求,并建产链接。然后再像原先的socket应用程序一样来回互相发送消息。

2.    Websocket不是一个新技术,只是HTML5中用javascript提供了一些接口,让你调用。服务端还是任何一门支持Socket通信的语言就行。

3.    Websocket的应用。可以应用在很的领域,游戏,股票。简单说主要是一些多用户的实时应用。也可实现类似和webqq一样的网页聊工具。

4.    Websockethttp协议轻量化了,在web交互中,我们再也不用让http包了一层又一层,而了去满足我们不需要的功能了。我们只要简单传我们想要的数据,协议我们可以在Websocket这种轻量级协议下,制定我们自己的子协议,可以减少不少的交互和网络流量哦。

       后面几篇会慢慢介绍,也欢迎大家一起讨论 ^-^

 

   引用:

      [1] jWebsocket(java服务端和客户端websocket框架)

      http://jwebsocket.org/

      [2] Websocket协议(本协议应用较为多,也比较全了)http://tools.ietf.org/HTML/draft-hixie-theWebsocketprotocol-76

      [3] HTML5 Websockets 基础使用教程

       http://kb.cnblogs.com/page/72745/


   大纲预告 

         一起来用Websocket(一):[开篇]WebsocketSocketHTML5复活

         一起来用Websocket(二):Websocket协议详细分析

         一起来用Websocket(三):开源Websocket框架--jWebsocket简介

主要功能,在线示例

         一起来用Websocket(四):开源Websocket框架jWebsocket的架构设计

         一起来用Websocket(五):jWebsocket中的权限和配置

         一起来用Websocket(六):jWebsocket框架中的数据包处理

         一起来用Websocket(七):jWebsocket 框架中的过滤器

         一起来用Websocket(八):jWebsocket框架中的常用工具类说明

        一起来用Websocket(九):jWebsocket.NET版本NWebsocket

       一起来用Websocket(十):NWebsocket中的二次开发

服务端插件 客户端插件

        一起来用Websocket(十一):NWebsocket框架开发实例

       一起来用Websocket(十二):在NWebsocket中应用高性能通信引擎 

posted @ 2010-11-09 21:37  刘寅  阅读(50175)  评论(15编辑  收藏  举报