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简介 微信小程序端API调用 服务器端使用nodejs配置 演示websocket webSocket简介 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据...
Websocket简介 Websocket是什么 WebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 为什么需要Websocket HTTP 协议是一种...
一、WebSocket简介 WebSocket协议于2011年被定义为RFC6455,旨在解决HTTP协议的不足,提供低延迟、高效率的全双工通信。它通过一个持久化的连接,使得数据可以双向流动,极大地优化了实时应用的性能。 二、Android ...
**一、WebSocket简介** WebSocket协议是HTML5定义的一个新标准,它建立在TCP之上,为客户端和服务器提供了一种持久连接的方式,允许双方实时交换数据。相比于传统的HTTP协议,WebSocket减少了握手次数和头部开销,...
### Spring Boot与WebSocket简介 Spring Boot提供了一套完整的WebSocket支持,包括Stomp(Simple Text Oriented Messaging Protocol)子协议,这使得在WebSocket上进行消息传递变得更加容易。WebSocket API允许...
WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得客户端和服务器之间的数据交换变得更加简单,允许服务器主动向客户端推送信息。对于实现聊天系统、实时通知等功能非常有用。与HTTP相比...
**一、WebSocket简介** WebSocket API设计目标是为了提供低延迟、高效率的双向通信机制。与HTTP不同,WebSocket一旦建立连接,就能保持打开状态,直到一方关闭连接。这避免了HTTP请求-响应模式下的多次握手和头部...
1. **WebSocket简介** WebSocket协议在HTML5中被引入,解决了HTTP协议的局限性,即HTTP请求是单向的,每次数据交换都需要客户端发起请求。WebSocket则提供了一个全双工的通道,允许服务器主动向客户端推送数据。 2...
1. WebSocket简介: WebSocket协议是HTML5的一个重要特性,它解决了HTTP协议的限制,提供了全双工的通信模式。传统的HTTP协议是基于请求-响应模型的,而WebSocket允许服务器主动向客户端推送数据,极大地提高了实时...
WebSocket简介** WebSocket是在HTTP基础上设计的,旨在提供低延迟、高效率的双向通信。传统HTTP协议是基于请求-响应模式的,而WebSocket则创建了一个持久连接,允许数据在服务器和客户端之间自由流动,减少了不必要...
1. WebSocket简介:WebSocket提供了一种方式,使得浏览器与服务器之间能够建立一个持久的连接,并且在该连接上进行双向数据传输。这为实时应用提供了基础,包括实时通讯、实时数据流等。 2. 一致性要求:文档中说明...
一、WebSocket简介 WebSocket协议是在HTTP的基础上建立的持久连接协议,通过握手过程,客户端和服务器之间可以建立起长期的TCP连接。一旦连接建立成功,双方就可以双向传输数据,不再受限于HTTP的请求-响应模式。...
1. **WebSocket简介**: WebSocket协议于2011年被IETF(Internet Engineering Task Force)正式标准化,定义了在TCP上进行全双工通信的协议。相比于传统的HTTP请求/响应模式,WebSocket提供了一种低延迟、高效率的...
一、WebSocket简介 二、WebSocket的工作原理 三、WebSocket的应用场景 四、WebSocket的优点与缺点 五、WebSocket的学习与实践 六、资源简介 一、WebSocket简介 重点详细内容知识点总结: 1.定义:WebSocket是一种在...
WebSocket简介 WebSocket协议是HTML5标准的一部分,通过TCP建立持久连接,为Web应用提供全双工通信。相比于HTTP,WebSocket避免了频繁的HTTP头开销,提高了数据传输效率。 ### 2. C# WebSocket服务器端实现 在C#中...
1. **WebSocket简介** WebSocket协议是HTTP协议的补充,解决了HTTP协议的单向通信问题,实现了全双工通信。它通过建立持久连接,允许数据在服务器和客户端之间双向流动,极大地提高了实时性。 2. **Spring ...
一、WebSocket简介 WebSocket协议是HTML5标准的一部分,通过TCP连接建立持久化的双向通信通道。它的主要特点包括低延迟、高效的数据传输以及与HTTP协议的兼容性。WebSocket协议的握手过程基于HTTP,但在握手成功后,...
一、WebSocket简介 WebSocket协议是HTML5标准的一部分,通过TCP连接建立持久化的全双工通道。它解决了HTTP协议在实时通信中的不足,避免了频繁的HTTP请求/响应,降低了网络延迟,提高了用户体验。 二、Android ...
一、WebSocket简介 WebSocket是HTML5新增的一项技术,它允许浏览器和服务器进行全双工通信,即双方可以同时发送数据,而无需像HTTP那样等待请求和响应的交互。这大大减少了数据传输的延迟,提高了实时性。WebSocket...
一、WebSocket简介 WebSocket是一种在客户端和服务器之间建立长连接的协议,它允许双方进行全双工通信,即数据可以在任意时刻由服务器或客户端发送。相比于传统的HTTP请求-响应模式,WebSocket降低了网络延迟,提高...