未加星标

网络应用程序的实时通信技术概念介绍

字体大小 | |
[前端(javascript) 所属分类 前端(javascript) | 发布者 店小二03 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏
什么是实时通信?

网络应用程序的实时通信简单理解是指 基于网络的应用程序的客户端和服务端,或者客户端和客户端之间及时、畅快的进行数据交换。

实时通信的应用场景

聊天服务 IM

聊天室 群组 私聊 在线客服

消息推送 Push

Web 动态通知 PC或移动客户端 公众号平台 实时通信的实现方式 Socket

PC或移动客户端以及服务端的应用程序,相互之间可以建立Socket连接(使用TCP或UDP协议),双方可随时向对方发送任意数据,在网络畅通的情况下能保持持久连接。但是在Web应用场景下不能使用。

轮询 Polling

Web客户端定时向服务端发送Ajax请求,服务端收到请求即返回响应并关闭链接。优点是实现起来比较容易,缺点是会产生大量的无用请求,浪费带宽和服务器资源。

长轮询 Long-Polling

Web客户端向服务器发送Ajax请求,服务端接到请求后hold住连接,直到有新消息或超时才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。相比单纯的轮询会少很多请求,但服务端需要类似 循环语句 + Sleep 的方式不停的查询是否有新数据,比较消耗服务端资源。

长连接

XmlHttpRequest在非IE的实现支持readyState为3时动态获取数据,所以非IE可以用XmlHttpRequest进行长连接,IE只支持readyState为4以后获取数据,IE下可以使用一个隐藏的iframe,将src属性设置为长连接的页面实现类似需求,服务端也使用类似 循环语句 + Sleep 的方式,不断的输出新数据。

Flash Socket

在Web页面中嵌入Flash,和服务端建立Socket连接,通过javascript可以操作Flash提供的接口,实现真正意义上的即时通信。缺点是客户端必须安装Flash插件, 并且因为不是使用HTTP协议,可能会被防火墙拦截。

Websocket

顾名思义,Websocket是能在Web页面上使用的Socket协议,使用JavaScript向服务端发出建立WebSocket连接的请求,该连接本质上就是一个TCP连接,建立以后可以通过TCP连接直接交换数据。在数据传输稳定性和传输量大小方面,具有很大的性能优势。Websocket是html5提供的,缺点也很明显,那就是低版本的浏览器不支持。

WEB实时通信解决方案

从上面各种实时通信的实现方式就能看出,基于WEB的实时通信是一件麻烦的苦差事。好在有很多优秀的开源方案,可以简化我们的开发工作。

Pushlet

Pushlet 是一个开源的Comet框架。Comet 是指基于HTTP长连接、无须在浏览器端安装插件的“服务器推” 技术;因此实际上Pushlet是比较老一代的基于长连接的方案,如想了解更多可以参考Pushlet的官网: http://www.pushlets.com/ 。

Socket.IO

Socket.IO是支持WebSocket协议的跨平台开源实时通信解决方案,Web客户端由JavaScript实现,服务端由Node.js实现,也有第三方在Android、iOS等平台下的客户端实现。 除了支持WebSocket协议,Socket.IO还支持上面介绍过的其他方式,并封装成了通用的接口,在服务端实现了这些方式的相应代码, 在浏览器端能根据这些方式的支持情况自动选择最佳方式。

Socket.IO 的官网是: http://socket.io/ ,GitHub地址是: https://github.com/socketio/socket.io 。

参考资料 http://www.cnblogs.com/hoojo/p/longPolling_comet_jquery_iframe_ajax.html http://www.ibm.com/developerworks/cn/web/wa-lo-comet/ https://www.zhihu.com/question/27498235/answer/73682175 http://www.infoq.com/cn/news/2015/01/socket-io-websocket/

本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程

分页:12
转载请注明
本文标题:网络应用程序的实时通信技术概念介绍
本站链接:http://www.codesec.net/view/482659.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 前端(javascript) | 评论(0) | 阅读(29)