惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
博客园 - 叶小钗
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
爱范儿
爱范儿
小众软件
小众软件
K
Kaspersky official blog
P
Proofpoint News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
V
Vulnerabilities – Threatpost
博客园_首页
Microsoft Security Blog
Microsoft Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
V2EX
C
Check Point Blog
S
Schneier on Security
P
Palo Alto Networks Blog
IT之家
IT之家
GbyAI
GbyAI
T
Threat Research - Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Apple Machine Learning Research
Apple Machine Learning Research
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
Project Zero
Project Zero
Y
Y Combinator Blog
V
Visual Studio Blog
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
S
Securelist
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理

博客园 - 刘寅

一起来用Websocket(二):Websocket协议详细分析 一起来用Websocket-目录 封闭式开发小记(11):封闭式开发的测试发布(制定版本规则,展现开发进度) 封闭式开发小记(10):封闭式开发的项目汇报(区分汇报类别和听众、争取最大认可) 封闭式开发小记(9):封闭式开发的最后一天(开发中的一些心情记录,和开发无关) 封闭式开发小记(8):封闭式开发的项目讨论 封闭式开发小记(7):如何和谐沟通、提高士气(结合开发实际冲突来深入讨论合作与沟通) 封闭式开发小记(6):封闭式开发的文档管理 封闭式开发小记(5):封闭式开发的敏捷开发 封闭式开发小记(4):封闭式开发的架构设计 封闭式开发小记(3):封闭式开发的人员配备 封闭式开发小记(1):封闭式开发的基本装备 封闭式开发小记(2):封闭式开发的时间安排 进程机制与并发程序设计-Linux下C实现-源码-makefile .NET 的 代码整洁之道 与 测试驱动开发 系列之(一)CleanCode 第14章 进程机制与并发程序设计-Linux下C实现(二) 生产者与消费者问题 进程机制与并发程序设计-Linux下C实现(一) 睡觉的理发师问题 操作系统常用页面置换算法模拟实验下载 07 zsb C练习上机(二)
一起来用Websocket(一)开篇 Websocket!Socket在HTML5复活
刘寅 · 2010-11-09 · via 博客园 - 刘寅

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