`

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 协议是一种...

    android websocket demo

    一、WebSocket简介 WebSocket协议于2011年被定义为RFC6455,旨在解决HTTP协议的不足,提供低延迟、高效率的全双工通信。它通过一个持久化的连接,使得数据可以双向流动,极大地优化了实时应用的性能。 二、Android ...

    C#WebSocket客户端及服务端Demo源代码

    **一、WebSocket简介** WebSocket协议是HTML5定义的一个新标准,它建立在TCP之上,为客户端和服务器提供了一种持久连接的方式,允许双方实时交换数据。相比于传统的HTTP协议,WebSocket减少了握手次数和头部开销,...

    spring-boot-websocket-client代码示例

    ### Spring Boot与WebSocket简介 Spring Boot提供了一套完整的WebSocket支持,包括Stomp(Simple Text Oriented Messaging Protocol)子协议,这使得在WebSocket上进行消息传递变得更加容易。WebSocket API允许...

    spring boot+vue+websocket带token身份认证推送消息实现

    WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得客户端和服务器之间的数据交换变得更加简单,允许服务器主动向客户端推送信息。对于实现聊天系统、实时通知等功能非常有用。与HTTP相比...

    使用spring-websocket包搭建websocket服务

    **一、WebSocket简介** WebSocket API设计目标是为了提供低延迟、高效率的双向通信机制。与HTTP不同,WebSocket一旦建立连接,就能保持打开状态,直到一方关闭连接。这避免了HTTP请求-响应模式下的多次握手和头部...

    spring项目整合webSocket

    1. **WebSocket简介** WebSocket协议在HTML5中被引入,解决了HTTP协议的局限性,即HTTP请求是单向的,每次数据交换都需要客户端发起请求。WebSocket则提供了一个全双工的通道,允许服务器主动向客户端推送数据。 2...

    webSocket项目.zip

    1. WebSocket简介: WebSocket协议是HTML5的一个重要特性,它解决了HTTP协议的限制,提供了全双工的通信模式。传统的HTTP协议是基于请求-响应模型的,而WebSocket允许服务器主动向客户端推送数据,极大地提高了实时...

    技术文档WebSocket相关

    WebSocket简介** WebSocket是在HTTP基础上设计的,旨在提供低延迟、高效率的双向通信。传统HTTP协议是基于请求-响应模式的,而WebSocket则创建了一个持久连接,允许数据在服务器和客户端之间自由流动,减少了不必要...

    WebSocket协议中文版

    1. WebSocket简介:WebSocket提供了一种方式,使得浏览器与服务器之间能够建立一个持久的连接,并且在该连接上进行双向数据传输。这为实时应用提供了基础,包括实时通讯、实时数据流等。 2. 一致性要求:文档中说明...

    android利用WebSocket实现消息推送

    一、WebSocket简介 WebSocket协议是在HTTP的基础上建立的持久连接协议,通过握手过程,客户端和服务器之间可以建立起长期的TCP连接。一旦连接建立成功,双方就可以双向传输数据,不再受限于HTTP的请求-响应模式。...

    websocket包spring-websocket-4.0.5.RELEASE,spring-messaging-4.0.5

    1. **WebSocket简介**: WebSocket协议于2011年被IETF(Internet Engineering Task Force)正式标准化,定义了在TCP上进行全双工通信的协议。相比于传统的HTTP请求/响应模式,WebSocket提供了一种低延迟、高效率的...

    websocket工作原理超详细重点知识点总结学习

    一、WebSocket简介 二、WebSocket的工作原理 三、WebSocket的应用场景 四、WebSocket的优点与缺点 五、WebSocket的学习与实践 六、资源简介 一、WebSocket简介 重点详细内容知识点总结: 1.定义:WebSocket是一种在...

    C# WebSocket

    WebSocket简介 WebSocket协议是HTML5标准的一部分,通过TCP建立持久连接,为Web应用提供全双工通信。相比于HTTP,WebSocket避免了频繁的HTTP头开销,提高了数据传输效率。 ### 2. C# WebSocket服务器端实现 在C#中...

    spring websocket

    1. **WebSocket简介** WebSocket协议是HTTP协议的补充,解决了HTTP协议的单向通信问题,实现了全双工通信。它通过建立持久连接,允许数据在服务器和客户端之间双向流动,极大地提高了实时性。 2. **Spring ...

    android 对webSocket的使用

    一、WebSocket简介 WebSocket协议是HTML5标准的一部分,通过TCP连接建立持久化的双向通信通道。它的主要特点包括低延迟、高效的数据传输以及与HTTP协议的兼容性。WebSocket协议的握手过程基于HTTP,但在握手成功后,...

    app websocket

    一、WebSocket简介 WebSocket协议是HTML5标准的一部分,通过TCP连接建立持久化的全双工通道。它解决了HTTP协议在实时通信中的不足,避免了频繁的HTTP请求/响应,降低了网络延迟,提高了用户体验。 二、Android ...

    webChat使用websocket实现网页多人聊天

    一、WebSocket简介 WebSocket是HTML5新增的一项技术,它允许浏览器和服务器进行全双工通信,即双方可以同时发送数据,而无需像HTTP那样等待请求和响应的交互。这大大减少了数据传输的延迟,提高了实时性。WebSocket...

    spring-websocket.rar

    一、WebSocket简介 WebSocket是一种在客户端和服务器之间建立长连接的协议,它允许双方进行全双工通信,即数据可以在任意时刻由服务器或客户端发送。相比于传统的HTTP请求-响应模式,WebSocket降低了网络延迟,提高...

Global site tag (gtag.js) - Google Analytics