- 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实时消息推送设计与实现
    【摘 要】随着互联网的飞速发展,网页中实时通讯和消息推送的应用愈加广泛。传统上采用定时轮询或Comet的方式实现实时通讯,但对服务器负担较重。全新的HTML5标准中引入了WebSocket,WebSocket实现了服务器与浏览器间的双向连接,基于事件方式,效率高,服务器负担轻。本文使用Node.js平台和Socket.IO组件设计并实现了WebSocket实时消息推送网页应用。 
  【关键词】WebSocket; Socket.IO; Node.js 
  0 引言 
  随着互联网的高速发展,网页中实时通讯和消息推送的应用愈加广泛,如论坛中消息实时推送、商务网站中的QQ在线客服、淘宝中网页版阿里旺旺、股票实时报价、实时数据监控等,这些应用都需要浏览器与服务器间的双向通讯。但是HTTP设计初衷是一种“请求-响应”的设计,即用户通过浏览器向服务器发出网页请求,浏览器将网页数据发给用户后就断开了与用户连接,请求都是由用户发起的,服务器只是被动的接收请求和反馈数据。这种模式下,用户可以主动发数据给服务器,而服务器只能被动反馈数据,不能主动发数据给用户。要实现实时通讯就需要“破解”这种单向的连接方式。 
  传统上常用解决办法是采用定时轮询方式和Comet方式,定时轮询是浏览器定时刷新页面,由浏览器主动发出请求,获取服务器上发给该用户的数据,这种方式轮询的时间间隔不好控制,还会造成大量无用请求,浪费服务器资源;而Comet是一种“长连接”设计,通过AJAX向服务器发出请求,服务器端会阻塞请求直到有数据传递或超时才返回,浏览器接收到数据或者超时后立即发出新请求,以此保持浏览器与服务器间的连接,这种方式Comet会长时间占用一个连接,当有大量长连接时会服务器负担加重。WebSocket的到来,解决了定时轮询方式和Comet方式无法根本解决的服务器负担难题。 
  1 WebScoket 
  WebSocket是HTML5标准中的一部分,其实现了浏览器与服务器之间的全双工通信。通过WebSocket浏览器与服务器只需要做一次握手动作,浏览器与服务器之间就形成了一条快速通道,两者之间可以进行消息互发了,这与传统的HTTP“请求-响应”模式有很大不同,更像是底层Socket通信的TCP运作模式。 
  WebSocket有以下优点: 
  (1)WebSocket与轮询或Comet方式比较,更简单更节省服务器资源。 
  (2)Comet中AJAX通信受到域的限制,而WebSocket允许跨域通信。 
  (3)与底层Socket相比,WebScoket的客户端是浏览器,有很强的通用性,也一般不会被防火墙屏蔽。 
  2 Node.js 
  Node.js是一个服务器端的JavaScript解释器,基于Google的V8 JavaScript引擎,速度与性能都相当优秀,其最大的特点是事件驱动、异步处理的运作模型,能够并发处理数以万计的网络请求,非常适合大量但数据小的请求。事件驱动是JavaScript的语言特性,通过回调函数来处理事件,这样就可以进行异步运作,避免服务器处理数据造成阻塞等待。此外Node.js还具有非阻塞I/O,单线程的特点,既能提高性能,又减低开发复杂度。 
  鉴于Node.js优异的性能,社区论坛的开发者们为其开发了很多优秀的扩展库,大大增强扩展了Node.js功能。其中本文要使用到Scoket.IO扩展库,Scoket.IO是一个开源的WebSocket库,Socket.IO提供基于事件的实时双向通讯,支持多种平台、浏览器和移动设备。 
  3 设计总体思路 
  基于WebSocket的实时消息推送设计的总体思路是在Linux系统下搭建Node.js服务器,然后安装Socket.IO扩展。然后通过JavaScript创建Web服务,Socket.IO监听Web服务,当有消息到来,就广播给每个在线用户。客户端包括发送者与接收者,发送者只负责发送消息,广播到每个接收者,而接收者只负责接收消息。发送者与接收者都引用Socket.IO提供的js库文件进行收发。 
  4 服务器端设计 
  服务器端创建Web服务,端口为8080,Socket.IO监听Web服务,当有消息到来,就广播给每个在线用户。 
  var fs = require(fs) , http = require(http) , sio = require(socket.io); 
  //引入fs、http、socket.io库 
  var server = http.createServer(function(req, res) {   //创建Web服务,监听8080端口 
   res.wr
                您可能关注的文档
- 基于VPN光电路整合USBKEY技术信息化平台妇幼保健管理模式应用效果分析.doc
 - 基于VPN技术CS程序开发应用性研究.doc
 - 基于VPN技术内部网络构建分析.doc
 - 基于VPN技术多校区校园网络安全策略探讨.doc
 - 基于VPN技术多校区高校图书馆网络问题研究.doc
 - 基于VPN技术实现信息资源共享有效途径.doc
 - 基于VPN技术校园网络安全体系研究与实现.doc
 - 基于VPN技术校园网络安全建设研究.doc
 - 基于VPN技术高校数字图书馆应用研究.doc
 - 基于VPN数字校园网络应用研究.doc
 
- 新型萘四甲酰亚二胺类侧链功能化有机半导体的合成及其性能表征.pdf
 - 信息重组策略在即兴发言汉英交替传译中的应用分析——以《中国民居(第二季)》模拟口译实践为例.pdf
 - 叶兆言历史题材创作的互文性研究.pdf
 - 信息化背景下农村小学家校沟通现状的调查研究——以徐州市铜山区D镇小学为例.pdf
 - 循环加载环境下高温超导堆叠结构低温压缩及多场性能实验表征研究.pdf
 - 氧化钨_氧化锌复合纳米结构调控及其气敏传感特性研究.pdf
 - 厌氧好氧时间比对EBPR中好氧颗粒形成及除磷过程的影响研究.pdf
 - 氧空位对NbO2金属-绝缘转变的影响机理研究.pdf
 - 氧化物半导体的晶面改性及其光催化性能探究.pdf
 - 信息流模式下社交电商平台青年用户信息规避行为影响因素研究.pdf
 
原创力文档
                        

文档评论(0)