`

WebSocket 简介

阅读更多

WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。在JavaEE7中也实现了WebSocket协议。

 

在浏览器中通过http仅能实现单向的通信,comet可以一定程度上模拟双向通信,但效率较低,并需要服务器有较好的支持; flash中的socket和xmlsocket可以实现真正的双向通信,通过 flex ajax bridge,可以在javascript中使用这两项功能. 可以预见,如果websocket一旦在浏览器中得到实现,将会替代上面两项技术,得到广泛的使用.面对这种状况,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽并达到实时通讯。

 

在JavaEE7中也实现了WebSocket协议。

 

原理 

WebSocket protocol 是HTML5一种新的协议(protocol)。它是实现了浏览器与服务器全双工通信(full-duplex)。

 

现很多网站为了实现即时通讯(real-time),所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(time interval)(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求(request),然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。

 

而最比较新的技术去做轮询的效果是Comet – 用了AJAX。但这种技术虽然可达到全双工通信,但依然需要发出请求(reuqest)。

 

在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在此WebSocket 协议中,为我们实现即时服务带来了两大好处:

 

1. Header

 

互相沟通的Header是很小的-大概只有 2 Bytes

 

2. Server Push

 

服务器可以主动传送数据给客户端

 

3 浏览器 

实现了websocket的浏览器:

 

ChromeSupported in version 4+

FirefoxSupported,in,version,4+

Internet,ExplorerSupported,in,version,10+

OperaSupported,in,version,10+

SafariSupported,in,version,5+

 

 

 

握手协议 

在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” (handshaking)。

 

PS1:握手协议在后期的版本中,会标明版本编号,下面的例子属于早期的协定之一,对于新版的 chrome 和 Firefox 皆不适用。

 

PS2:后期的版本大多属于功能上的扩充,例如使用第7版的握手协议同样也适用于第8版的握手协议。

 

例子:

 

浏览器请求

 

GET /demo HTTP/1.1

 

Host: 你的网址.com

 

Connection: Upgrade

 

Sec-WebSocket-Key2: 12998 5 Y3 1 .P00

 

Upgrade: WebSocket

 

Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5

 

Origin: http://你的网址.com

 

^n:ds[4U

 

服务器回应

 

HTTP/1.1 101

 

WebSocket Protocol Handshake

 

Upgrade: WebSocket

 

Connection: Upgrade

 

Sec-WebSocket-Origin: http://你的网址.com

 

Sec-WebSocket-Location: ws://你的网址.com/demo

 

Sec-WebSocket-Protocol: sample

 

8jKS’y:G*Co,Wxa-

 

5 服务器 

在服务器端,也出现了一些实现websocket协议的项目:

 

jetty 7.0.1 包含了一个初步的实现

 

resin 包含有websocket 实现

 

pywebsocket, apache http server 扩展

 

apache tomcat 7.0.27 版本

 

Nginx 1.3.13 版本

 

jWebSocket java实现版

 

websocket api在浏览器端的广泛实现似乎只是一个时间问题了, 值得注意的是服务器端没有标准的api, 各个实现都有自己的一套api, 并且jcp也没有类似的提案, 所以使用websocket开发服务器端有一定的风险.可能会被锁定在某个平台上或者将来被迫升级.

 

 

 

 

分享到:
评论

相关推荐

    微信小程序webSocket的使用方法

    webSocket简介 微信小程序端API调用 服务器端使用nodejs配置 演示websocket webSocket简介 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据...

    详解微信小程序实现WebSocket心跳重连

    Websocket简介 Websocket是什么 WebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 为什么需要Websocket HTTP 协议是一种...

    Web Socket简介

    Web Socket简介 关于WebSocket内容的简介以及相关的应用

    使用Java技术WebSocket创建聊天、群聊,实现好友列表,添加好友,好友分组,聊天记录查询功能

    WebSocket简介: 服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。客户端请求建立连接,然后服务端收到消息,此次通讯并不会断开,而是一直...

    javaweb应用程序源码-Websocket-Introduction-Course:在LinkedInLearnig课程使用JavaEE进

    WebSocket简介 1 Rise of WebSocket 2 WebSocket Usage WebSocket前端和后端 1 WebSocket lifecycle and topology 2 WebSocket frontend and backend 项目申请与结构 1 Introduction to the project application...

    微信小程序实现WebSocket心跳重连

    Websocket简介 Websocket是什么 WebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 为什么需要Websocket HTTP 协议是一种无...

    HTML5WebSocket权威指南

    资源名称:HTML5 WebSocket权威指南内容简介:《HTML5 WebSocket权威指南》是HTML5 WebSocket领域最权威的著作之一,它系统、全面地讲解了HTML5 WebSocket的各个方面,是Web开发人员和架构师学习WebSocket的最佳选择...

    python实现WebSocket服务端过程解析

    一种类似Flask开发的WebSocket-Server服务端框架,适用python3.X 1、安装模块Pywss pip install pywss 2、搭建简易服务器 2.1 服务端代码 代码简介 route: 注册请求路径 example_1(request, data): request: ...

    nuts-and-bolts-of-websocket:WebSocket 的螺母和螺栓

    WebSocket 简介 WebSocket 介绍幻灯片 使用检查 WebSocket 兼容性 Chrome 开发者工具、控制台 ws = new WebSocket("ws://echo.websocket.org"); ws.send("hello world"); 在网络选项卡中,显示 WebSocket 框架 ...

    webSocket心跳检测设计思路及代码实现.html

    此文章主要简介一下webSocket心跳检测机制的实现思路以及代码实现,第一次发布博客如有不足之处,敬请谅解,webSocket心跳检测实现有很多方法 我只是为大家说一下我自己的实现思路

    HTML5消息推送

    WebSocket简介: 在WebSocket API中,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。 webSocket是html5新引入的技术,允许后台随时向前端发送文本或者二进制消息,...

    使用HTML5WebSocket构建实时Web应用

    资源名称:使用 HTML5 WebSocket 构建实时Web应用内容简介: 本文主要介绍了 HTML5 WebSocket 的原理以及它给实时 Web 开发带来的革命性的创新,并通过一个 WebSocket 服务器和客户端的案例来充分展示 WebSocket 的...

    websocket通讯协议(10版本)简介

    NULL 博文链接:https://songpengfei.iteye.com/blog/1178310

    WebSocket简单聊天室

    资源名称:WebSocket工具简介:目前只有 WIN 服务端 (学习QT的小作品)通过websocket连接 服务器 1234端口。 index.php 37行 IP地址就是服务端IP地址服务端 可用于ASP,PHP,.NET等各类程序包含3个 JS 操作// 登录服务...

    百度地图毕业设计源码-java-websocket:基于jettywebsocket后台往前台页面推送消息

    Websocket简介 Websocket实例 一、背景 HTTP协议的无状态和被动性,使得B/S架构的服务器主动推送消息给浏览器比较困难,而通用的一些解决方案又有各种各样的问题,比如:ajax轮询会有很多无用的请求,浪费宽带;基于...

    基于vue和websocket的多人在线聊天室

    https 因为像websocket和很多h5的新功能,浏览器为了安全起见都仅支持https下开发 关于nodejs搭建express服务器可以看这里我就是在这里学的,代码里也借鉴了很多,关于搭建https服务器就不简介了,内容太多,推荐...

    websocket-chat:使用简单的 WebSocket 聊天应用程序介绍 HTML5 WebSocket 协议

    HTML5 WebSocket 编程简介使用简单的 WebSocket 聊天应用程序介绍 HTML5 WebSocket 协议。 基于我的书。

    php中使用websocket详解

    1、socket协议的简介 2、介绍client与server之间的连接原理 3、PHP中建立socket的过程讲解 4、用一个聊天室作为实例详细讲解在PHP中如何使用socket 一、socket协议的简介  WebSocket是什么,有什么优点  WebSocket...

Global site tag (gtag.js) - Google Analytics