Websocket(1)----初识websocket

4 篇文章 0 订阅
3 篇文章 0 订阅

html5的出现大大提升了用户体验,也简化了前端编程复杂度。websocket是html5提出的一种新的协议,它改变了传统HTTP协议的通信方式,实现了浏览器与服务器全双工通信(full-duplex),解决了实时web应用的困境,通过websocket可以让服务器主动向浏览器推送数据。
websocket和http协议
初学websocket的时候,人们问的最多的可能就是websocket协议和http协议有什么关系,其实从我接触web时,就只知道浏览器和服务器是通过http协议来传送数据,其它的就不知道了,这次把http协议也补一下。这里讲一下我的理解,欢迎大家批评指正
http协议的特点是客户端发送请求给服务端,服务端响应后会主动释放连接,称之为短连接。服务端不能主动给客户端推送消息。虽然当时这样设计是为了保证安全性,但对于现如今实时性要求高的应用就是一大瓶颈,当然现在有很多方法可以使用http协议来模拟实时推送(轮询、长连接),但也只是模拟,不仅性能上有待考究,就是实时性上也可能存在误差。下面简单的介绍下常用的模拟方法(摘自http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/):
1. 轮询(polling):这是最早的一种实现实时 Web 应用的方案。客户端以一定的时间间隔向服务端发出请求,以频繁请求的方式来保持客户端和服务器端的同步。这种同步方案的最大问题是,当客户端以固定频率向服务器发起请求的时候,服务器端的数据可能并没有更新,这样会带来很多无谓的网络传输,所以这是一种非常低效的实时方案。
2. 长轮询(long polling):长轮询是对定时轮询的改进和提高,目地是为了降低无效的网络传输。当服务器端没有数据更新的时候,连接会保持一段时间周期直到数据或状态改变或者时间过期,通过这种机制来减少无效的客户端和服务器间的交互。当然,如果服务端的数据变更非常频繁的话,这种机制和定时轮询比较起来没有本质上的性能的提高。
3. 流:流技术方案通常就是在客户端的页面使用一个隐藏的窗口向服务端发出一个长连接的请求。服务器端接到这个请求后作出回应并不断更新连接状态以保证客户端和服务器端的连接不过期。通过这种机制可以将服务器端的信息源源不断地推向客户端。这种机制在用户体验上有一点问题,需要针对不同的浏览器设计不同的方案来改进用户体验,同时这种机制在并发比较大的情况下,对服务器端的资源是一个极大的考验。

综合这几种方案,您会发现这些目前我们所使用的所谓的实时技术并不是真正的实时技术,它们只是在用 Ajax 方式来模拟实时的效果,在每次客户端和服务器端交互的时候都是一次 HTTP 的请求和应答的过程,而每一次的 HTTP 请求和应答都带有完整的 HTTP 头信息,这就增加了每次传输的数据量,而且这些方案中客户端和服务器端的编程实现都比较复杂,在实际的应用中,为了模拟比较真实的实时效果,开发人员往往需要构造两个 HTTP 连接来模拟客户端和服务器之间的双向通讯,一个连接用来处理客户端到服务器端的数据传输,一个连接用来处理服务器端到客户端的数据传输,这不可避免地增加了编程实现的复杂度,也增加了服务器端的负载,制约了应用系统的扩展性。

那websocket和http有什么关系呢?
(1) http协议和websocket协议都是应用层协议,它们都是建立在TCP层之上的。
(2)websocket在建立握手连接时,数据是通过http协议传输的,正如我们下面所看到的“GET HTTP/1.1”,这里面用到的只是http协议一些简单的字段。但是在建立连接之后,真正的数据传输阶段是不需要http协议参与的。
在示例中我抓了一下websocket的消息头,可以具体看下有什么不同(浏览器为火狐):
websocket消息头
可以看出websocket连接服务器还是用http协议,但也有不同,比如请求时connection=“keep-alive,Upgrade”,Upgrade:”websocket“,这是告诉服务器我要将请求的http协议升级为websocket协议。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值