基于WebRTC的浏览器端Web服务器的设计与实现*
2015-12-23何加铭
缪 进,何加铭
(1. 宁波大学通信技术研究所,浙江 宁波 315211;2. 浙江省移动网应用技术重点实验室,浙江 宁波 315211)
基于WebRTC的浏览器端Web服务器的设计与实现*
缪 进1,2,何加铭1,2
(1. 宁波大学通信技术研究所,浙江 宁波 315211;2. 浙江省移动网应用技术重点实验室,浙江 宁波 315211)
WebRTC具有简单易扩展、开放标准、开源免费的特点。通过介绍利用WebRTC提供的标准API快速开发Web应用,研究了传统Web服务器存在的问题,分析了其存在问题的瓶颈,并实现了基于浏览器的Web服务器。系统地实现WebRTC技术可以为Web服务器提供支持,并能为信息的传播和分享带来更多的解决方案。
WebRTC Web服务器 浏览器 Nodejs
1 引言
WWW[1]从首次亮相以来20多年过去了,如今万维网给全世界人民的信息获取、检索和发布带来了极大的便利。不同地域、民族和年龄段的人们可以通过网络交流并分享信息。网络改变了人们的日常生活方式,且不断向传统行业渗透,越来越多的行业都在使用万维网来提升自己的竞争力。
随着通信网络和互联网的飞速发展,基于浏览器的实时通信技术RTC Web[2]或者是WebRTC[3-4]受到了各大IT巨头和初创公司的青睐。这种技术使得浏览器之间有了对等通信的能力,使用该技术浏览器可以运用P2P的特性实时传送内容。和目前基于浏览器的准实时通信技术相比,该技术在时延、成本和安全性方面都有较大的优势。
本文围绕WWW信息分享需求和WebRTC提供的Peer-To-Peer特性,提出了一种新的,有别于传统服务器和免费个人建站的解决方案,给用户提供了一种分布式、基于浏览器的低成本、高可用性的Web服务器。同时,文章中也分析了传统Web服务器的弊端和新的服务器带来的可能性,并对未来Web发展做出了展望。
图1 客户端浏览器对服务器端进行一次请求过程
2 传统Web服务器存在的问题
Web服务器即WWW(WORLD WIDE WEB)服务器,其主要提供网上信息浏览和检索服务。WWW是Internet上最受欢迎、最为流行的多媒体信息查询工具,是Internet上20多年前诞生的服务,也是发展最迅速和当前应用最广泛的服务。正是因为有了WWW工具,近年来Internet和移动互联网才能得到迅速发展,PC端和移动端的用户数量不断激增。
Web服务器的主要功能是存储、处理用户请求的资源及数据,同时向客户端分发网页。客户端和服务器之间的交互通过HTTP协议进行。通常分发的页面是HTML文档,主要是文本内容,包括图片、样式和交互脚本。
2.1 传统Web服务器处理客户请求的过程客户端的请求交给服务器处理,服务器端的监听程序被动等待客户浏览器发起请求。用户的每次请求都交由服务器处理,解析URL、寻找请求的文件、生成静态页面文档并发回客户端浏览器,具体过程如图1所示。当服务客户数量过多或者同一时间网络流量过大,则会造成服务器资源负荷过大、处理速度过慢、带宽不足,从而导致响应速度变慢等问题,更有甚者会造成服务器崩溃无法访问。
2.2 集中式和分布式
传统Web服务器采用集中式管理,所有资源和数据放置在机房或者公司内部,服务器故障或者断电将导致站点或者服务无法访问。即使有做服务器分布式配置,也不能保证服务的不间断运行,在管理和配置不当时则可能导致大量数据和文件丢失。该技术提出的解决方案,所有资源放在用户自己的电脑中,即使面临数据丢失的风险,造成的损失和传统服务器的灾难性故障相比也是可以接受的。分布的世界各地作为服务器的浏览器,可以有效利用PC和网络资源,带来更多的价值。
2.3 安全性和稳定性
Web服务器使用的操作系统份额最大的是Windows、Linux与Unix。这些Web服务器的配置和管理比较繁琐,且安全问题日益突出。最近爆出的OpenSSL[5]漏洞导致众多科技公司账号泄露,引起了大家对互联网安全的一阵恐慌。相反地,由于浏览器属于用户特别广的产品,安全性极高,各大公司应对问题的速度相应较快,即使存在漏洞,影响的数据也很有限,不会导致整个系统发生故障。
2.4 成本问题
传统Web服务器需要购买硬件和网络带宽,必要时可能需要CDN加速。现行的云服务器价格也不算便宜,在用户需求简单,只需要分享信息和发布公告功能的情况下可能会造成杀鸡用牛刀的尴尬局面。近年来,节能减排的需求日益迫切,有关服务器的功耗问题被提出,众多科技公司纷纷提出自己的解决方案。谷歌自建机房,提出了多种降低能耗的解决方案,并应用于实战,但是巨大的资金投入不是一般公司能承受的。本文提出的服务器内置于用户的浏览器,能有效利用PC的各种资源,并能合理使用当前的带宽,极大地降低了服务器的运行成本。
3 WebRTC介绍及其技术特点
WebRTC(Web real-time communication,Web实时通信)从名称上看即知它是一项使用Web实现实时通信的技术。WebRTC能够在浏览器内进行实时视频和音频通信,还支持远程协作与网络游戏等实时性交互式应用,已被W3C纳入HTML5标准。Web 2.0在过去的几年里扩展了浏览器的可编程性和交互性,增加了更多的动态内容和格式。然而,Web技术还不足以应付实时双向的视频和语音通信需求。如果使用Adobe的Flash或Microsoft的Silverlight等浏览器插件则明显存在灵活性和性能等方面的不足。利用WebRTC技术能够开发具有实时音视频通信功能的Web应用,移动应用也可以使用其核心功能实现实时音视频通信。有了这些应用作为基础,再结合其他的优秀技术,则可以开发出更多具有创意的Web APP和移动应用。
如图2所示,WebRTC系统架构[6]根据面向的用户不同分为3个部分和1个核心库。面向Web应用开发者的Web API部分、浏览器厂商API部分和浏览器厂商自定义部分,这3个部分共享WebRTC核心库。Web应用开发者调用W3C制定的JavaScript API开发WebRTC的应用。浏览器之间双向媒体流的发送和接收通过PeerConnection API进行管理,使用JSEP[7](JavaScript session establishment protocol,JavaScript会话建立协议)进行媒体参数的协商。使用Data Channels API进行浏览器之间收发多媒体的数据流是WebRTC最常见的应用场景。
WebRTC技术的主要优点如下:
(1)开放的标准
互联网的成功离不开开放和免费,其中HTTP、HTML和TCP/IP都是功臣。WebRTC已加入到由W3C和IETF标准组织共同定义的一个开放的HTML5标准。为支持高质量、完整的音视频传输解决方案,W3C的WebRTC工作组为开发者定义了基于浏览器的Web API。
图2 WebRTC系统架构
(2)简单和易扩展性
为方便开发者通过互联网提供音视频和多媒体数据等多种应用和服务,WebRTC提供简单的、可扩展性强的技术框架。WebRTC本身并不定义媒体流的路由方式、同用户之间的交互方式、呼叫协议、身份认证及同其他网络的互联方式等。这些规则由服务提供商和开发者根据不同的业务场景和技术需求进行灵活选择和协商[8]。
(3)厂商的广泛支持
WebRTC技术获得来自全球各大厂商和初创公司的广泛支持。除了浏览器厂商Google、Mozilla和Opera外,其他大公司也对WebRTC表现出了强烈的兴趣。如运营商Telefonica、AT&T,设备商Cisco、Acme Packet、Ericsson、Alcatel Lucent、Avaya,初创公司Addlive、Apizee、ClassOnlive、OnSIP、PubNub、Zingaya。近期确认的Snapchat收购Addlive也说明了WebRTC技术的巨大潜力。WebRTC技术在美国、欧洲和亚洲都得到了广泛的关注,中国和韩国的不少厂商正在加紧研发基于该技术的产品。
(4)与其他技术的融合
图3 传统服务器处理多用户请求
WebRTC技术可以轻松实现与其他先进技术的结合,如人脸识别、虚拟现实手势控制等,也可以通过浏览器端强大的通信能力和HTML5技术开发出在线多人游戏和SNS应用。
(5)与运营商的互补
目前,华为发布的一款基于WebRTC技术的富媒体通信能力开放网关[9]已经引起了全球多家领先电信运营商对华为WebRTC解决方案的浓厚兴趣,并希望展开进一步的交流与合作。WebRTC技术也可作为运营商既有业务的有效补充,如通过WebRTC提供会议、IMS服务等。
图4 Nodejs服务器处理多用户请求
图5 系统功能模块图
4 基于WebRTC的浏览器端服务器设计与实现
4.1 服务器设计选型
由于使用浏览器作为Web服务器提供对外访问,主要提供静态HTML页面的访问、图片和文件分享功能。Nodejs是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎。目的是为了实现可扩展的网络程序,如Web服务。Nodejs采用“事件循环(event loop)”的架构,使得编写可扩展性高的服务器端程序变得既容易又安全。Nodejs在静态页面请求处理上有着极大的优势,处理用户请求对比如图3、图4所示。Nodejs不适用于以下2种场景:计算密集型应用和逻辑十分复杂的事务。虽然Nodejs在以上2种场景下有短板,由于本系统并不涉及过多的计算和复杂的逻辑,所以采用Nodejs搭建Web服务器,并采用Nodejs的快速开发框架express实现Web服务器的快速成型。
4.2 浏览器端服务器整体设计
前端采用Backbone.js作为MVC框架,使用jQuery操作DOM,应用handlebars作为HTML模板,coffee script编写并编译成JavaScript代码。通过socket.io与后台交互。Nodejs作为JavaScript异步服务器,express.js作为Node Web服务器,并加载http模块和fs文件模块进行网络通信和文件操作。系统功能模块图如图5所示。
4.3 浏览器端服务器的工作流程及演示图
客户A的浏览器A访问Nodejs服务器(http:// theServerURL/),输入服务器名称创建服务器xxx。此时应用服务器向STUN服务器注册服务器A的域名信息并提供A的NAT穿越所需信息,最后生成浏览器端服务器A(http://theServerURL/server/xxx/))。此服务器A对客户A提供内容修改、动态路径、模板管理和会话管理功能。此时客户B欲访问A创建的首页http://theServerURL/connect/xxx/,首先向远程STUN服务器请求A的P2P穿越信息,根据穿越信息访问到服务器xxx,xxx根据B请求的URL地址返回相应的数据和资源。服务端界面图如图6所示,客户端显示用户创建的内容如图7所示。
图6 服务端界面图
图7 客户端显示用户创建的内容
5 结束语
WebRTC最具价值的技术就是实现浏览器之间的数据传输和分享。一个可能的应用场景是未来用户的电脑上只有1个浏览器,但是可以直接通过浏览器和Internet连接。用户能直接搭建属于自己的临时服务器,把需要的信息分享出去,用户关闭浏览器即关闭服务器,这种阅后即焚[10]的场景提供了更大的创新空间。这种基于B/B的模式可能会对目前的B/S模式的各类应用产生巨大的影响。基于WebRTC的P2P传输技术同样给移动互联网行业带来了巨大的可能性。目前众多WebRTC初创公司爆发出来的潜力已经给出了很好的佐证。在移动互联网飞速发展的3~5年内,伴随着HTML5标准的日益成熟,WebRTC技术将会得到广泛的应用。在不久的将来可能会出现基于移动终端的Web服务器或者嵌入式设备的Web服务器,这给人们的信息分享和传播带来了无限可能。
[1] Wikipedia. World Wide Web[EB/OL]. [2014-08-22]. http://en.wikipedia.org/wiki/World_Wide_Web.
[2] IETF RTCWeb Workgroup. Rtcweb Status Pages[EB/OL]. [2014-04-16]. http://tools.ietf.org/wg/rtcweb/charters.
[3] 屈振华,李慧云,张海涛,等. WebRTC技术初探[J]. 电信科学, 2012(10): 106-110.
[4] Adam Bergkvist, Daniel C Burnett, Cullen Jenningsetal. WebRTC 1.0: Real-Time[Z]. 2013.
[5] 杨勇,邹雷. OpenSSL Heartbleed漏洞研究及启示[J]. 信息安全与通信保密, 2014(5): 99-102.
[6] 张志明,柯卫. 基于HTML5的视频通信云服务应用技术研究[J]. 电信科学, 2012(10): 31-37.
[7] IETF RTCWeb JSEP. JavaScript session establishment protocol[EB/OL]. [2014-06-04]. http://datatracker.ietf. org/docc/draft-ietf-rteweb-jsep/.
[8] 林鸿,王松,杨鑫,等. 基于WebRTC技术的应用及平台技术开发与设计[J]. 电信科学, 2013(9): 20-25.
[9] 华为发布业界第一款基于WebRTC技术的富媒体通信能力开放网关[J]. 电信网技术, 2013(5): 70-70.
[10] 郭文东. 米聊2014新功能 独家抢先体验[J]. 计算机与网络, 2014(3): 46-47.★
缪进:硕士研究生就读于宁波大学,研究方向为移动通信、移动互联网。
何加铭:教授,博士生导师,主要研究方向为移动通信。
Design and Implementation of Web Server in Browser Based on WebRTC
MIAO Jin1,2, HE Jia-ming1,2
(1. Institute of Communication Technology, Ningbo University, Ningbo 315211, China; 2. Mobile Network Application Technology Key Laboratory of Zhejiang Province, Ningbo 315211, China)
WebRTC has the features of simplicity, easy expansibility, open standard and free & open source. The rapid development of Web applications by means of standard API in WebRTC was introduced and some problems in traditional Web server were researched. The bottleneck of these problems was analyzed and the Web server based on browser was implemented. WebRTC not only provides support to Web server, but brings more solutions to information distribution and sharing.
WebRTC Web server browser Nodejs
10.3969/j.issn.1006-1010.2015.08.012
TP393
A
1006-1010(2015)08-0056-05
缪进,何加铭. 基于WebRTC的浏览器端Web服务器的设计与实现[J]. 移动通信, 2015,39(8): 56-60.
浙江省重大科技专项(2011C11042);浙江省移动网络应用技术联合重点实验室(2010E10005);浙江省移动互联网用户端软件科技创新团队(2010R50009);浙江省重点科技创新团队项目(2012R10009-11、2012R10009-20)
2014-11-19
责任编辑:刘妙 liumiao@mbcom.cn