论文部分内容阅读
1.研究背景针对全世界在线通信问题,不同的公司提出了不同的解决方案,希望在满足客户基本通信需求的同时,尽量保证客户可以得到最好的资源。随着通信系统越来越普及,很多问题和挑战从不同的方面呈现出来:一方面是程序员开发程序的问题,另一方面是用户体验的问题。这些问题的出现,使得如何在保证用户间最基础的通讯功能的同时简化用户操作、提升用户体验,成为当今在线通信问题研究的重点。另一方面,目前绝大部分的在线通信系统都是基于C/S架构(即客户机/服务器架构)和B/S架构(即浏览器/服务器架构)开发的,这类集中式的应用模式虽然在一定程度上解决了程序维护和升级的问题,但对于保护用户隐私方面存在很大的隐患。如今,网络安全问题越来越被公众所关注,因此通信中和通信后的隐私保护也成为了在线通信系统需要面对的主要问题之一。2.系统特点及挑战本文尝试以一个用户的角度去考虑解决很多公司碰到的用户体验问题,使用WebRtc这种新的技术去提供更简单且快捷的通信,最后使用对等网络这一应用框架来解决用户的隐私保护问题。在研究过程中,为了提高应用的通信效率、保证用户的通信体验,本文使用WebRtc完成应用程序的开发、集成和测试。WebRtc和HTML5的结合能够在传统的浏览器中实现实时的通信功能,同时WebRtc浏览器实时通信技术的新特性也有助于减少通信软件对基础设备的压力以及对客户端带宽的要求(这个特性使得对等网络中点对点的通信功能成为可能)。正如文中所阐述的,新技术的主要优势体现在用户体验和为应用程序服务器减压方面,WebRtc的API标准,可以使通信内容的创建和游戏、视频、音乐、新闻等媒体信息变的更大众化和分散化。此外,该技术的应用范围也非常广泛,我们期待JavaScript的开发人员可以使WebRTC在更多的应用程序上得到使用。本文将突出介绍WebRtc对应用程序功能的重大作用以及本系统与大部分常见软件相比的优点和缺点。另一方面,本课题的研究重点是建立一个跨越不同浏览器且独立于网络服务器的web应用程序。这一应用的诞生将带来很多的好处,最重要的一个优势是它的轻量。因为聊天记录和文件不保存在服务器中,这将创建一个托管环境来存储聊天记录,在这里服务器仅用于发送信令从而减少主机和运行应用程序所需的资源。在传统框架中,应用程序需要一个服务器和一个数据库,分别用来存储和检索聊天记录,与之相比,本文的这种机制能够减少应用系统处理这些问题所需要的资源消耗。这一应用程序另外一个重要的优势是它的安全性,因为基于相关技术,文件的传输过程无需在服务器上存储,这将为用户之间的安全沟通提供保证,同时这一应用框架也有利于新型通信应用产品的出现。虽然本文设计的在线通信系统有诸多优点,但在应用的开发过程中,有许多的困难和挑战需要被解决。首先,因为这个应用程序缺少成熟产品作为参照,我们并不清楚所设计的应用最终是否可以满足预期需求,这就产生了许多问题。这些问题不是一般性的技术问题,涉及到用户的使用体验方面,需要对不同用户的意见和要求有一定的了解和认识。由于对于这些问题没有直接的解决办法,我们花费了至少两个月的时间通过调查问卷的形式搜集用户的意见,然后尽最大可能提出一个简单易用的应用系统架构。另外,在系统实现方面,因为网上没有关于WebRTC及点对点通信的足够资料,同时很多的软件库由于问世时间较短也存在着很多漏洞,所以通过这些方法对系统进行实现是很具有挑战性的,我们在图书馆和互联网社区中阅读了大量的技术材料,希望能够实现出一个稳定而轻量的实时通信应用系统。3.关键技术WebRTC(Web Real-Time Communications)是一种使不同浏览器客户端间共享音频、视频流和数据的对等实时通信技术。作为一套新型的通信应用框架,WebRTC提供任何浏览器共享应用数据、执行对等通信的能力,在通信过程中,浏览器不需要安装插件或者第三方软件。WebRTC组件支持JavaScript API使用接口,相关接口包括媒体流API(音频或视频数据流)、节点连接API(它允许两个或多个用户进行点对点链接)和数据信道API(使用户能够进行实时游戏、文字聊天和文件传输等操作的应用接口)。WebRTC的主要接口被多种浏览所集成,其中包括Mozilla,Chrome等浏览器,这些接口可以帮助浏览器在没有中心服务器的前提下实现直接相互通信,这样的特性使浏览器就能够在互联网上发送对等的消息(这些消息包括数据对象,文件和视频流等)。与此同时,WebRtc也被多种成熟的聊天系统所应用,其中十分著名的系统包括:谷歌环聊Google Hangout、雅虎通Yahoo Messenger、旧版的Facebook messenger、Wechat(只有离线模式下才应用WebRTC技术)等。除WebRTC外,本应用系统也是用到了多种JS库来辅助实时通信功能的实现,相关的 JS 库包括:Free switch;SIP JS;EasyRTC;P JS;PeerJs,RTCMultiConnectionJS等。其中,Free Switch可以作为实时通信控制中心的安装和实施接口,它可以用于提供VOIP(IP语音)服务,使程序在语音通信方面更为方便快捷;SIP JS使程序可以预先运行一个连接到控制中心的线程,这个线程可以允许用户在同一时间进行打电话、发送信息、媒体视频等多方面的操作;PeerJS是用来开发“去中心化”的浏览器应用,这类应用可以进行点对点操作,不需要收到中心服务器的影响。以上类库促进了浏览器聊天应用程序的发展,基于这些类库,开发人员可以更加简便快捷地实现程序功能,使系统在满足用户沟通需求的同时为用户带来更好的使用体验。另外,由于这些类库都是开源的,任何人都可以通过使用这些类库对应用程序进一步进行完善,因此应用程序将会变得更加简单、易于维护。另外,本系统也使用到了 MongoDB、HTML5、NodeJS、ANDROID 和 CSS3 等互联网新技术。MongoDB是一个基于分布式文件存储的数据库,旨在为 Web应用提供可扩展的高性能数据存储解决方案;Node JS是一个基于Chrome JavaScript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用;CSS3是CSS技术的升级版本,CSS3语言开发是朝着模块化发展的,这些模块包括盒子模块、列表模块、文字特效、多栏布局等。这些技术都将运用到实时通信应用程序中(如本地存储和缓存浏览器等),这些技术不但帮助开发者减少了任务工作量,同时也给相关的用户提供了更快更好的服务。结合上述技术的特点和JavaScript编程语言的优势,本文开发了这个点对实时通信应用,并且通过JavaScript的相关特性使应用屏幕大小自适应化。4.系统应用框架及实现最终的应用程序是基于EasyRTC库进行开发的,为了利用WebRTC技术的优点,系统使用Node Js编程语言和Web Storm IDE进行开发。系统的需求分析是基于校园环境进行的,我们通过问卷的方式调查了用户关于视听通讯系统的认识和意见,调查结果显示系统的简洁性和易用性是影响用户使用体验的重要指标,因此在设计过程中我们主要对系统的简便性进行了评估,以便满足大部分用户的使用需求。本文所设计并实现的应用程序主要包括三个部分,即:(1)通话模块:这个模块确保用户有能力从不同浏览器发起和接受视频电话;同时,我们会确保所有的浏览器环境都支持和集成该模块,对于已发布的版本,将通过自动升级更新该模块的特性。(2)文本模块:这个模块可确保用户通过点对点的方式(与通话模块类似)使用信道传输数据(这个服务只能在有信号的情况下使用)。(3)文件传输模块:这个模块主要用来完成浏览器间的文件传输,该模块支持不同类型的文件,包括二进制数据、文档以及任何套接字传输协议所支持的文件格式。需要注意的是,该服务和上述两个服务一样,只能在有信号的情况下使用。在三个系统模块中,通话模块提供拨打和接听视频通话的功能,虽然不同用户的浏览器环境不同,但是所有的环境都支持和集成这一功能,不受发布的版本影响。文本模块通过点对点的方式来确保数据传输通道的建立和使用。通话模块和文本模块中的服务器只用于信令不用于其他情况。文件传输模块的主要任务是把数据传输通道集成到浏览器上,该模块使用网络套接字和端口来发送和传递数据,文件传输模块中服务器也仅用于信令。本系统使用对等网络架构来实现基本的在线通信功能。这种通信架构集成了浏览器通过通信通道与服务器的通信能力,同时该架构是对等的而不是集中式的,这种架构的层次结构取决于开发商(可以为两层或三层),根据这种层次结构的设计,开发商可以选择哪一层作为应用层来满足客户的需求。覆盖网络可以看成是一个全连通的虚拟网络,对等网络一般都在物理层实现这种虚拟覆盖网络,并且对等网络的结点与底层物理层不能分开。对等网络架构在TCP/IP层进行数据交换,但这种架构设计通过逻辑链接也允许数据在应用层直接通信,这里的每一个逻辑连接都可以对应到物理层的一个路径。覆盖网络用于索引和同伴发现,使P2P系统可以独立于物理网络拓扑。基于覆盖网络节点相互间的连接,根据覆盖网络内结点的交互方式以及结点的存储方式,我们可以把这种网络结构分为结构化和非结构化(或两者之间的混合)。在对等网络中,客户使用资源的同时也可以分享自己的资源。与客户机—服务器系统不同,随着访问用户的越来越多,对等网络会增加更多的可访问内容资源供用户使用。这种自适应的特性是对等网络的主要优势之一,因为它为减少了用户的安装成本和运行成本。另外,参与者之间的合作也是对等网络取得成功的关键,要想充分发挥这种优势,需要有大量的用户节点提供资源。但在当前大部分的对等网络使用者中通常都包含了大量“自私”用户,这些用户只利用他人的资源而从不把自己的资源主动分享。这种情况会对网络造成很严重的影响,在某些情况下甚至会导致网络的崩溃。所以系统需要对这些自私的用户进行相应的惩罚,例如限制他们享受资源的大小或者降低他们的贡献值。由于网络的不对称性,研究网络的社会属性具有极大的挑战,为了鼓励甚至强制用户节点贡献资源,大量的激励机制被提出。本文所设计的应用程序中包含了一个对等网络的信令服务器,该信令服务器主要是用于统计用户的贡献值,并不直接参与用户间的通信交流过程,系统以此种方式激励用户的参与。在统计过程中,信令服务器给现有的连接分配唯一的ID便于它们之间的通信,并使用Node JS对相应的激励机制进行实现。最后,本系统的存储结构与通常的聊天软件有所不同(虽然一些聊天软件的通信模块也使基于WebRTC开发的,但它的聊天记录存储在一个数据库中,用户可以根据日期顺序来查询聊天记录),基于一种分布式的存储模式,本文设计的应用系统实现了存储结构的“去中心化”,通过这种特性用户的隐私问题可以得到有效的保护。下面是本系统使用到的WebRtc技术开发的应用程序编程接口和软件开发工具包。Twillio(audio only);requestec(product:say page);plivo;Tokbox;openClove;tropo(audio only);weemo;Voximplant(audio only);Priologic(EasyRTC,tawk.com,proPhone);Dialogic;bistri;Apidaze(apiRTC);CafeX;hookflash;ApiZee;Temasys(SkyWayJS);&yet(simpleRTC);RTCMultiConnection(muazkhan,demo);peerjs(data channel);rtc.io;WebRtc.io(no changes for almost a year);WebRtc-data.io(stripped down,data only version of WebRtc.io)。上面提到的 SDK 和 API都是系统使用到的,这些SDK和API也会定期地进行维护和更新。5.结论及展望随着移动互联网的不断发展,传统的通信软件不再能够满足用户的体验需求,同时通信中的隐私保护问题也越来越受到用户的关注。本文针对目前在线通信网络系统中存在的操作不便、用户体验差、隐私保护不到位等问题,提出了一种基于WebRTC技术及点对点对等网络应用框架的在线通信应用平台,该平台可以应用于用户生活中的方方面面。为了提升通信系统的实时性,应用使用到了 WebRTC、MongoDB、HTML5、CSS3等多种新型互联网技术,希望在满足用户实时通信基本需求的同时,尽可能增强用户的使用体验。另一方面,隐私保护问题也是本文所重点关注的问题之一,系统使用点对点对等网络框架来构建出一个分布式的通信系统,在该系统中,聊天记录和文件仅保存在浏览器本地而不保存在服务器中,这将创建一个托管环境来保证用户的隐私问题。最后本文针对具体的系统网络应用环境设计了相应的激励机制,以此来保证对等网络中用户的参与。点对点在线通信系统是一个新兴的行业应用,它让web浏览器具有实时通讯的功能,让企业能够更好地完善他们的网站,让用户改善视频协作和在线会议的水平,等等。另外,点对点在线通信系统的推广也将打破供应商和平台的依赖性,这能够帮助IT组织加速市场投放的时间并且控制成本,解决目前IT行业各种关于连接、安全和控制的挑战。6.文章结构本文各章节内容安排如下,总共分七个章节,分别叙述了软件开发中不同阶段的设计内容以及在该开发阶段中所面临的挑战和解决方案。第一章为背景介绍,包括项目描述、可行性分析以及测试本研究成果的通信能力所用到的相关技术及文献;第二章对系统进行概述,重点说明了系统的主要模块·;系统的上下文环境将在第三章提出,在这里重点描述所有模块的细节以及关于如何改进模块开发过程的考虑和启示,同时也涉及一些代码说明;第四章描述了系统设计方法、标准和约定;第五章介绍了系统中的组件;第六章介绍了系统的版本及安装说明;第七章给出了系统总结和结论。