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

   前言 

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的程序,其语言可以是Java、C#、PHP等其它可以监听或编写socket应用的语言。

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

规定平台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.    Websocket把http协议轻量化了,在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(一):[开篇]Websocket!Socket在HTML5复活

一起来用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中应用高性能通信引擎

转载于:https://www.cnblogs.com/dtdnh520/archive/2010/11/09/1873095.html

一起来用Websocket(一)开篇 Websocket!Socket在HTML5复活相关推荐

  1. 突袭HTML5之WebSocket入门3 - 通信模型socket.io

    为什么需要socket.io? node.js提供了高效的服务端运行环境,但是由于浏览器端对HTML5的支持不一,为了兼容所有浏览器,提供卓越的实时的用户体验,并且为程序员提供客户端与服务端一致的编程 ...

  2. java nio socket长连接_netty学习实战—实现websocket长连接和socket之间进程通信

    netty学习-实现websocket长连接和socket之间通信 最近正在学习netty,跟着教程写了一个基于WebSocket的网页聊天室,对netty有了一定的了解,现在正好项目使用到长连接,选 ...

  3. websocket之一:websocket简介

    Websocket websocket为一次HTTP握手后,后续通讯为tcp协议的通讯方式. WebSocket 使用一种被称作"Upgrade handshake(升级握手)"的 ...

  4. php通知websocket,php实现websocket实时消息推送

    php实现websocket实时消息推送,供大家参考,具体内容如下 SocketService.php /** * Created by xwx * Date: 2017/10/18 * Time: ...

  5. android websocket封装,Android WebSocket 方案选型OkHttp

    目前Android WebSocket 框架 主要包括: SocketIO Java-WebSocket OkHttp WebSocket 一开始我首选的是采用SocketIO方案,因为考虑该方案封装 ...

  6. java websocket原理_Java WebSocket基本原理

    WebSocket协议介绍 WebSocket协议是一个网络协议,允许两个相连的端在一个单一TCP连接上进行全双工消息通信. 在WebSocket的场景中,连接通过HTTP和WebSocket端点交互 ...

  7. apache 配置 wss websocket打开握手超时_「Web应用架构」WebSocket介绍和WebSocket API

    WebSocket支持在客户端和服务器之间双向的.面向消息的文本和二进制数据流.它是浏览器中最接近原始网络套接字的API.除了WebSocket连接也不仅仅是一个网络套接字,因为浏览器在一个简单的AP ...

  8. WebSocket使用javax.websocket.RemoteEndpoint.Basic.sendObject(Object arg0)向页面方法发送对象

    WebSocket接口中有一个直接发送对象给页面的方法: voidjavax.websocket.RemoteEndpoint.Basic.sendObject(Object arg0) throws ...

  9. webSocket整理(二)--webSocket的模拟qq聊天案例

    一 前言 前面一篇大致讲解了webSocket的定义以及配置,那么这一篇通过简单案例对webSocket更好的理解与使用.使用的是spring-servlet-webSocket的整合形式.因为这里主 ...

最新文章

  1. Mongodb 请求处理流程
  2. .Net(C#)自定义WinForm控件之小结篇(强力推荐)
  3. 利用CentOS快速构建自己的发行版(3)
  4. gettype获取类名_delphi – 获取属于任何类型的单元名称(TRttiType)
  5. 【初学线段树,看这篇文章准没错】线段树(单点修改and区间修改)acm寒假集训日记22/1/10
  6. vue打包后图片未显示问题
  7. VS 2015 搭建Google Test
  8. SubSonic使用技巧
  9. 服务器系统建立安全连接失败,尝试与系统“ServerName”建立安全连接时,MSDTC遇到错误(HR = 0x80000171)...
  10. AODV的设计思路和现有的各种解决方案的优缺点
  11. 我的注电之旅——基础考试篇
  12. scratch 游戏html5,scratch3转换为html5
  13. 数据分析案例-电影数据可视化分析
  14. 解决VsCode感叹号快捷键生成html骨架失效
  15. 无法向虚拟机中拷贝文件解决办法
  16. MIT线性代数1806(35) 总复习
  17. 如何快速的开通公众号【原创】功能
  18. 英特尔第十代处理器为什么不支持win7_Intel的7代酷睿CPU可以安装Win7系统吗?能不能完美支持呢?为什么有人说不能使用Win7系统...
  19. Collecting Bugs (DP期望)
  20. 自学虚幻引擎图文笔记:颜色混合、法线强度调整及选择、归一化、点积、常量偏差比例、规范化等节点

热门文章

  1. ASP调用存储过程详解。
  2. apache 不解释php,apache-2.2 – Apache不解释.PHP文件
  3. matlab下的textread()
  4. uni-app接口封装
  5. 求最大连续子序列和——解法1 – 暴力出奇迹||解法2 – 分治
  6. JSP:1. 指令(page  ;include ;taglib)2. 内置对象
  7. Windows 技术篇-任务管理器查看执行进程的程序所在位置方法,查看执行进程的命令行
  8. DbVisualizer数据库连接工具默认查询结果只显示100条解决方法,dbvis如何展示更多行,如何显示全部数据
  9. RT-Thread的I/O设备模块及其驱动实现步骤
  10. CTFshow 命令执行 web48