- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Websocket信息推送探究和实现
基于Websocket信息推送探究和实现 摘要:传统的B/S应用由于HTTP协议的限制,无法实现服务器向浏览器推送信息。虽然可以通过一些技术手段变相实现信息的推送,但明显存在着各种不足。随着Websocket协议被W3C作为标准引入HTML5,各种浏览器开始支持Websocket。通过Websocket,浏览器和服务器之间可以建立一个双向的通信通道,从而实现实时的信息推送功能。在对Websocket进行了初步研究的基础上,通过对一个现实系统的升级,实现了基于Websocket的实时信息推送,达到预期效果。
关键词:B/S;信息推送;Websocket
引言
随着Web 2.0时代的到来,B/S(Browser/Server)构架的应用越来越广泛。在B/S构架的应用中,浏览器与服务器之间的通信采用HTTP(HyperText Transfer Protocol,超文本传输协议)协议。而HTTP协议中,所有的通信都必须由浏览器发起,服务器进行响应,这就是“请求-回复(Request-Response)”模式。因此,在B/S构架的应用中,服务器无法自主的向浏览器发送信息。但随着B/S应用越来越复杂,功能越来越多,客户所期望的用户体验越来越好,越来越多的B/S应用希望服务器能自主的向浏览器发送信息,甚至期望达到浏览器与服务器之间实时的双向通信。这就需要B/S构架中能够实现信息的推送(Web Push)。
1 传统的信息推送方式
传统的B/S构架中,由于HTTP协议的限制,服务器不能主动发起通信,因此要实现类似于服务器推送信息的效果只能采用一些变通的方法。传统的信息推送一般采取如下几种方式实现:定期轮询(Periodic Polling)、长轮询(Long Polling)和流(Streaming)。
1.1 定期轮询
由浏览器每隔一段时间主动向服务器发送一次请求,然后根据服务器的返回数据来获得获得服务器希望推送给浏览器的信息。这种方式下,轮询的时间间隔比较难控制,时间间隔太长,浏览器不能及时的获得服务器需要推送的信息,信息交流不及时,用户体验变差;而如果时间间隔太短,则浏览器将频繁的与服务器进行数据通信,导致服务器负载增大。特别是当服务器无需推送信息的时候,浏览器仍旧会定期的与服务器进行通信,从而浪费大量的网络带宽和资源。
1.2 长轮询
当浏览器向服务器发送请求后,如果服务器有信息需要推送,则立刻回应这个请求,否则,先保持这个连接一段时间,直到服务器有数据需要推送或者连接时间过期为止;浏览器在收到服务器的回应后,将立刻向服务器再次发出新的请求,并等待服务器的回应。这种方式可以减少浏览器与服务器之间的无效通信,从而提高效率,减少系统负担。但当服务器更新频繁时,也就和定期轮询之间没有本质的差别了。
1.3 流
浏览器通过一个隐藏的窗口(比如iframe)向服务器发出一个长连接的请求,服务器接收到这个请求后,做出回应并不断更新连接状态,从而保证服务器与浏览器之间的连接不过期,进而实现服务器将信息推送给浏览器的功能。这种方式在并发数较大的情况下,服务器将会消耗大量的系统资源。
1.4 传统推送方式的不足
虽然上述几种方法均能在传统的B/S构架中实现,但这这些方法很明显的存在着一些弊端:1、定期轮询可能会导致较高的延时,服务器信息不能实时的被推送到浏览器;2、长轮询或流需要使用到一些特定的编程模型或方案,如Comet;3、会带来许多扩展性问题;4、较高的带宽成本和系统资源开销;5、对跨域环境的支持比较有限。
2 基于Websocket协议的信息推送方式
Websocket协议是HTML5提供的一种浏览器与服务器之间进行双向通信的技术。通信双方在完成一次简单的握手操作之后,就建立起一条快速通道,然后利用这个通道可以进行双向通信,自然也就可以实现信息的推送。
2.1 Websocket协议简介
Websocket协议是独立的基于TCP的协议,与HTTP协议之间唯一的联系仅是在浏览器与服务器的握手阶段。
2.1.1 浏览器发出握手请求
首先浏览器以标准的HTTP Get方式向服务器发出握手请求,在请求的头信息中加入了Websocket协议所需要的一些信息。示例如下:
GET /WSHandler.ashx HTTP/1.1
Connection:Upgrade
Host:localhost:1550
Origin:http://localhost:1550
Sec-WebSocket-Key:A3IIMlEc9ARZWlO9ShrePw==
Sec-WebSocket-Version:13
文档评论(0)