背靠背虚拟web实时通信代理以及相关的方法、系统的制作方法

文档序号:7811486阅读:208来源:国知局
背靠背虚拟web实时通信代理以及相关的方法、系统的制作方法
【专利摘要】本发明涉及背靠背虚拟WEB实时通信代理以及相关的方法、系统。此公开了背靠背web实时通信(WebRTC)虚拟代理,相关的方法、系统和计算机可读媒体也被公开。在一个实施方式中,一种用于提供背靠背虚拟WebRTC代理的方法包括由执行于计算设备上的WebRTC服务器接收第一和第二WebRTC客户端之间的WebRTC要约/应答交换。该方法进一步包括实例化一个或多个虚拟WebRTC代理。该方法还包括在第一WebRTC客户端和一个或多个虚拟WebRTC代理的一个之间建立第一WebRTC交互流,以及在第二WebRTC客户端和一个或多个虚拟WebRTC代理的一个之间建立第二WebRTC交互流。该方法附加地包括经由一个或多个虚拟WebRTC代理,将第一WebRTC交互流的内容引导到第二WebRTC交互流,以及将第二WebRTC交互流的内容引导到第一WebRTC交互流。
【专利说明】背靠背虚拟WEB实时通信代理以及相关的方法、系统

【技术领域】
[0001]本公开的技术一般地涉及web实时通信(WebRTC)交互会话。

【背景技术】
[0002]web实时通信(webTRC)代表一种当前的努力,以开发用于将实时通信能力集成到web客户端、例如web浏览器中以实现与其他web客户端的直接交互的工业标准。这一实时通信功能可由web开发人员通过标准标记标签和客户端侧脚本应用编程接口(API)访问,例如由超文本标记语言版本5(HTML5)所提供的标准标记标签,以及例如JavaScript API。有关 WebRTC 的更多信息可以在由 Alan B.Johnson 以及 Daniel C.Burnett (2012 DigitalCodex LLC)所作的 “WebRTC:HTML5 实时 web 的 API 和 RTCffEB 协议” (WebTRC:APIs andRTCffEB Protocols of the HTML5 Real-time Web)中找到,其全部内容通过引用结合于此。
[0003]WebRTC提供用于在点对点交互会话和多方交互会话中建立实时视频、音频和/或数据流的内置能力。WebRTC标准当前在World Wide Web Consortium (W3C)和InternetEngineering Task Force (IETF)的联合开发之中。WebRTC标准的当前状态的信息可以在例如 http://www.w3c.0rg 和 http://www.1etf.0rg 找至lj。
[0004]为了建立WebRTC交互会话(例如实时视频、音频和/或数据交换),两个web客户端可以从WebRTC应用服务器检索WebRTC使能的web应用,例如HTML5/JavaScriptweb应用。通过web应用,这两个web客户端进行媒体协商以进行通信并就定义WebRTC交互会话的特性的参数达成一致。该媒体协商被称为WebRTC “要约/应答”交换。在要约/应答交换中,工作在发送方计算设备上的第一 web客户端发送“要约”到在接收方计算设备上的第二 web客户端。该要约包括指定第一 web客户端支持并希望用于WebRTC交互会话中的媒体类型和能力的WebRTC会话描述对象。随后第二 web客户端以指示提出的媒体类型和能力的哪一个是其支持并接受用于WebRTC交互会话的WebRTC会话描述对象“应答”作为响应。一旦WebRTC要约/应答交换完成,web客户端随后可以相互建立直接对等连接,并可以开始媒体或数据的实时交换。web客户端之间的对等连接典型地使用安全实时传输协议(SRTP)来传输实时媒体流,并且可以利用用于实时数据交换的各种其他协议。
[0005]然而,端对端或者说对等(peer to peer)体系对于某些环境下的实时交互可能不是最优的。例如,可能有必要提供对WebRTC交互流的记录或监控,和/或解决在WebRTC交互流的端点处的web客户端之间的已知的不兼容性。在直接对等连接是不可能的情况下,WebRTC标准允许WebRTC交互流通过TURN(使用中继穿越NAT)服务器进行路由。然而,通过TURN服务器传递的WebRTC交互流是被加密的,因此不能在TURN服务器进行检查或监控。此外,将WebRTC交互流实时转换为更容易操作的格式会需要网关,这可能过度复杂和/或在商业上不可行。


【发明内容】

[0006]在此详细说明书中公开的实施方式提供了背靠背虚拟web实时通信(WebRTC)代理。相关的方法、系统和计算机可读媒体也被公开。在一些实施方式中,两个或更多WebRTC客户端通过WebRTC服务器寻求建立WebRTC交互会话,该WebRTC服务器实例化一个或多个虚拟WebRTC代理。WebRTC服务器可以使得两个或更多WebRTC客户端的每一个建立与一个或更多虚拟WebRTC代理的WebRTC交互流。WebRTC服务器随后通过引导在一个或多个虚拟WebRTC代理之间建立的WebRTC交互流的内容而“背靠背(back-to-back) ”连接虚拟WebRTC代理。通过这种方式,WebRTC服务器可以为两个或更多WebRTC客户端提供WebRTC交互会话,同时还提供附加的媒体处理功能。作为非限制性例子,媒体处理功能可以包括对WebRTC交互流的记录和/或监控,从WebRTC交互流提取内容或者向其中注入内容,和/或解决WebRTC客户端之间潜在的或实际的不兼容性。
[0007]在这点上,在一个实施方式中,提供了一种用于提供背靠背虚拟WebRTC代理的方法。该方法包括由执行于计算设备上的WebRTC服务器接收第一 WebRTC客户端和第二WebRTC客户端之间的WebRTC要约/应答交换。该方法进一步包括实例化一个或多个虚拟WebRTC代理。该方法还包括在第一 WebRTC客户端和一个或多个虚拟WebRTC代理中的一个之间建立第一 WebRTC交互流,以及在第二 WebRTC客户端和一个或多个虚拟WebRTC代理中的一个之间建立第二 WebRTC交互流。该方法附加地包括经由一个或多个虚拟WebRTC代理,将第一 WebRTC交互流的内容引导到第二 WebRTC交互流,以及将第二 WebRTC交互流的内容引导到第一 WebRTC交互流。
[0008]在另一个实施方式中,提供了一种用于提供背靠背虚拟WebRTC代理的系统。该系统包括至少一个通信接口,以及与该至少一个通信接口相关联的WebRTC服务器。该WebRTC服务器包括被配置为接收第一 WebRTC客户端和第二 WebRTC客户端之间的WebRTC要约/应答交换的WebRTC应用提供器。该WebRTC服务器进一步包括虚拟WebRTC代理管理器。该虚拟WebRTC代理管理器被配置为实例化一个或多个虚拟WebRTC代理。该虚拟WebRTC代理管理器进一步被配置为在第一 WebRTC客户端和一个或多个虚拟WebRTC代理的一个之间建立第一 WebRTC交互流,以及在第二 WebRTC客户端和一个或多个虚拟WebRTC代理的一个之间建立第二 WebRTC交互流。该虚拟WebRTC代理管理器还被配置为经由一个或多个虚拟WebRTC代理,将第一 WebRTC交互流的内容引导到第二 WebRTC交互流,以及将第二 WebRTC交互流的内容引导到第一 WebRTC交互流。
[0009]在另一个实施方式中,提供了非暂时性计算机可读介质。该非暂时性计算可读介质上存储有计算机可执行指令以使得处理器实现一种方法,该方法包括接收第一 WebRTC客户端和第二 WebRTC客户端之间的WebRTC要约/应答交换。由计算机可执行指令实施的该方法进一步包括实例化一个或多个虚拟WebRTC代理。由计算机可执行指令实施的该方法还包括在第一 WebRTC客户端和一个或多个虚拟WebRTC代理的一个之间建立第一WebRTC交互流,以及在第二 WebRTC客户端和一个或多个虚拟WebRTC代理的一个之间建立第二 WebRTC交互流。由计算机可执行指令实施的该方法附加地包括经由一个或多个虚拟WebRTC代理,将第一 WebRTC交互流的内容引导到第二 WebRTC交互流,以及将第二 WebRTC交互流的内容引导到第一 WebRTC交互流。

【专利附图】

【附图说明】
[0010]被结合于此并形成本说明书的一部分的随附的附图示出本公开的多个方面,与说明书一起用于解释本公开的原理。
[0011]图1是示出在两个WebRTC客户端之间经由包括虚拟WebRTC代理管理器和两个背靠背虚拟WebRTC代理的WebRTC服务器的web实时通信(WebRTC)交互会话的概念图;
[0012]图2是示出图1中用于提供背靠背虚拟WebRTC代理的WebRTC服务器和虚拟WebRTC代理管理器的示范性操作的流程图;
[0013]图3是示出在包括图1的虚拟WebRTC代理管理器和背靠背虚拟WebRTC代理的示范性系统中的示范性通信流的图;
[0014]图4是示出在利用由虚拟WebRTC代理管理器管理的单个虚拟WebRTC代理的两个WebRTC客户端之间的WebRTC交互会话的概念图;
[0015]图5A-5C是示出用于提供背靠背虚拟WebRTC代理和附加媒体处理功能的更详细示范性操作的流程图;
[0016]图6是可以包括图1的WebRTC服务器和虚拟WebRTC代理管理器的示范性基于处理器的系统的方框图。

【具体实施方式】
[0017]现在参考附图,描述了本公开的几个示范性实施方式。措辞“示范性”用在此处的意思是“作为示例、例子或说明”。在此被描述为“示范性”的实施方式并不一定被解释为相比其他实施方式是优选的或有利的。
[0018]在此详细说明书中公开的实施方式提供了背靠背虚拟web实时通信(WebRTC)代理。相关的方法、系统和计算机可读媒体也被公开。在一些实施方式中,两个或更多WebRTC客户端通过WebRTC服务器寻求建立WebRTC交互会话,该WebRTC服务器实例化一个或多个虚拟WebRTC代理。WebRTC服务器可以使得两个或更多WebRTC客户端的每一个建立与一个或更多虚拟WebRTC代理的WebRTC交互流。WebRTC服务器随后通过引导在一个或多个虚拟WebRTC代理之间建立的WebRTC交互流的内容而“背靠背(back-to-back) ”连接虚拟WebRTC代理。通过这种方式,WebRTC服务器可以为两个或更多WebRTC客户端提供WebRTC交互会话,同时还提供附加的媒体处理功能。作为非限制性例子,媒体处理功能可以包括对WebRTC交互流的记录和/或监控,从WebRTC交互流提取内容或者向其中注入内容,和/或解决WebRTC客户端之间潜在的或实际的不兼容性。
[0019]在这点上,在一个实施方式中,提供了一种用于提供背靠背虚拟WebRTC代理的方法。该方法包括由执行于计算设备上的WebRTC服务器接收第一 WebRTC客户端和第二WebRTC客户端之间的WebRTC要约/应答交换。该方法进一步包括实例化一个或多个虚拟WebRTC代理。该方法还包括在第一 WebRTC客户端和一个或多个虚拟WebRTC代理的一个之间建立第一 WebRTC交互流,以及在第二 WebRTC客户端和一个或多个虚拟WebRTC代理的一个之间建立第二 WebRTC交互流。该方法附加地包括经由一个或多个虚拟WebRTC代理,将第一 WebRTC交互流的内容弓丨导到第二 WebRTC交互流,以及将第二 WebRTC交互流的内容弓I导到第一 WebRTC交互流。
[0020]图1示出提供在此公开的背靠背虚拟WebRTC代理的示范性交互通信系统10。特别地,该示范性交互通信系统10提供执行在计算设备14上的WebRTC服务器12,其包括虚拟WebRTC代理管理器16。虚拟WebRTC代理管理器16处理虚拟WebRTC代理的实例化,并且协调虚拟WebRTC代理之间的WebRTC交互流内容的建立和引导以在两个或更多端点之间提供WebRTC交互会话。在此使用的“虚拟WebRTC代理”指的是浏览器的实例或者在虚拟WebRTC代理管理器16的控制下执行于计算设备14上的其他WebRTC使能的客户端应用。“WebRTC交互会话”指用于在两个或更多端点之间执行WebRTC要约/应答交换、建立对等连接、以及开始WebRTC交互流的操作。“WebRTC交互流”,如在此公开的,指根据WebRTC标准和协议在两个或更多端点之间传递的交互媒体流和/或交互数据流。作为非限制性示例,组成WebRTC交互流的交互媒体流可以包括实时音频流和/或实时视频流,或者其他实时媒体或数据流。包括WebRTC交互流的数据和/或媒体可以被在此统称为“内容”。
[0021 ] 为了解释的目的,在图1中,WebRTC交互流18被示为在计算设备14和计算设备20之间传递,WebRTC交互流22被示为在计算设备14和计算设备24之间传递。可以理解的是计算设备14、20和24可以都处于同一公共或私有网络中,或者可以位于分开的、可通信地耦合的公共或私有网络中。图1的交互通信系统10的一些实施方式可以实现为每个计算设备14、20和24可以是具有网络通信能力的任意计算设备,例如智能电话、平板电脑、专用web电器、媒体服务器、桌面或服务器计算机、或者特定功能的通信设备,作为非限制性的示例。计算设备14、20、24分别包括通信接口 26、28和30,用于将计算设备14、20和24连接至一个或多个公共和/或私有网络。在一些实施方式中,计算设备14、20和24的元件可以分布在多于一个的计算设备14、20、24上。
[0022]图1的计算设备20和24分别包括WebRTC客户端32和34。WebRTC客户端32和34的每一个可以是WebRTC使能的web浏览器应用、专用通信应用、移动应用、或者无接口(interface-less)应用,例如守护(daemon)或服务应用,作为非限制性示例。WebRTC客户端32和34实现对于在计算设备20和24分别与计算设备14之间提供实时WebRTC交互会话必要的协议、编解码器和应用编程接口(API)。
[0023]如图1所示,计算设备20可通信地耦合到用于接收音频输入的音频输入设备36 (例如麦克风),以及用于产生音频输出的音频输出设备38 (例如,扬声器或耳机)。计算设备20进一步可通信地耦合到用于接收视频输入的视频输入设备40 (例如相机、网络相机或其他视频源),以及用于显示视频输出的视频输出设备42 (例如显示器)。类似地,计算设备24可通信地耦合到音频输入设备44、音频输出设备46、视频输入设备48、以及视频输出设备50。音频输入设备36和44、音频输出设备38和46、视频输入设备40和48、和/或视频输出设备42和50可以集成到各个计算设备20和24中,和/或它们可以是可通信地耦合到各个计算设备20和24的外围设备和/或虚拟设备。在一些实施方式中,计算设备20和/或24可以可通信地耦合到比图1所示的更多或更少的设备。
[0024]为了建立WebRTC交互会话,WebRTC客户端32和WebRTC客户端34经由超文本传输协议(HTTP) /超文本安全传输协议(HTTPS)连接54和56从WebRTC服务器12的WebRTC应用提供器52下载WebRTCweb应用(未示出)。在一些实施方式中,WebRTCweb应用可以包括使用HTML5提供丰富用户接口、并且使用JavaScript处理用户输入并与WebRTC应用提供器52通信的HTML5/JavaScriptweb应用。WebRTC客户端32和WebRTC客户端34随后通过经由WebRTC应用提供器52交换WebRTC会话描述对象(未示出)进行WebRTC要约/应答交换。交换的WebRTC会话描述对象用于确定所需WebRTC交互会话的媒体类型和能力。
[0025]在典型的端对端或对等(peer to peer)体系中,在WebRTC要约/应答交换完成后,WebRTC交互流会经由对等连接直接建立在WebRTC客户端32和WebRTC客户端34之间。然而,如上所述,在某些环境下端对端体系可能并非最优。例如,端对端体系可能使得对WebRTC交互流的记录和监控、和/或解决WebRTC客户端32和WebRTC客户端34之间的不兼容性变得困难或不可能。
[0026]在这点上,虚拟WebRTC代理58和60由虚拟WebRTC代理管理器16提供。在图1的例子中,随着WebRTC应用提供器52从WebRTC客户端32和34接收WebRTC要约/应答交换,虚拟WebRTC代理管理器16实例化对应于WebRTC客户端32和34的虚拟WebRTC代理58和60。在一些实施方式中,虚拟WebRTC代理管理器16可以通过在计算设备14上发起一个或多个WebRTC客户端,的实例,例如web浏览器,而实例化虚拟WebRTC代理58和60。一些实施方式可以实现虚拟WebRTC代理58和60被执行于操作系统的虚拟实例之中。
[0027]在实例化之后,虚拟WebRTC代理58和60的每一个由虚拟WebRTC代理管理器16引导以从虚拟WebRTC应用提供器62下载虚拟WebRTC应用(未示出)。一些实施方式可以实现为虚拟WebRTC应用提供器62可通信地耦合到虚拟WebRTC代理管理器16。在一些实施方式中,虚拟WebRTC应用提供器62可以集成到虚拟WebRTC代理管理器16和/或WebRTC应用提供器52或者组成虚拟WebRTC代理管理器16和/或WebRTC应用提供器52的元件。虚拟WebRTC应用包括用于与虚拟WebRTC代理58和60的WebRTC API接口的专用指令。虚拟WebRTC代理58和60可以经由虚拟WebRTC应用与WebRTC客户端32和34分别通信,以及与虚拟WebRTC代理管理器16通信。
[0028]虚拟WebRTC代理管理器16使得虚拟WebRTC代理58和60建立与相应WebRTC客户端32和34的WebRTC交互流18和22。在这样做时,虚拟WebRTC代理管理器16和/或虚拟WebRTC代理58和60可以修改在WebRTC客户端32和34之间传递的数据以便于建立WebRTC交互流18和22。例如,与每个WebRTC交互流18和22的端点的位置和/或身份相关的数据可以被修改以允许虚拟WebRTC代理58和60用作为它们的对应WebRTC客户端32和34的代理服务器。
[0029]虚拟WebRTC代理管理器16随后“背靠背”连接虚拟WebRTC代理58和60 (即由虚拟WebRTC代理58的WebRTC交互流18输出的内容被引导作为进入虚拟WebRTC代理60的WebRTC交互流22的输入,以及反之)。为了完成“背靠背”连接,虚拟WebRTC代理管理器16提供虚拟音频接收器(Rx) 64、虚拟音频发送器(Tx) 66、虚拟视频接收器(Rx) 68、虚拟视频发送器(Tx) 69、虚拟数据接收器(Rx)70以及虚拟数据发送器(Tx) 71,虚拟WebRTC代理58可通信地与它们耦合。类似地,虚拟WebRTC代理60可通信地耦合到由虚拟WebRTC代理管理器16提供的虚拟音频接收器(Rx) 72、虚拟音频发送器(Tx) 74、虚拟视频接收器(Rx) 76、虚拟视频发送器(Tx) 77、虚拟数据接收器(Rx) 78、以及虚拟数据发送器(Tx) 79。随着WebRTC交互流18和22的开始,虚拟WebRTC代理58和60转发接收自对应WebRTC交互流18和22的音频信号到虚拟音频接收器64和72。虚拟WebRTC代理58和60还转发接收自对应WebRTC交互流18和22的视频信号到虚拟视频接收器68和76,并转发接收自对应的WebRTC交互流18和22的数据到数据接收器70和78。
[0030]可通信地耦合到虚拟WebRTC代理58的虚拟音频接收器64被配置为引导接收自虚拟WebRTC代理58的音频信号到可通信地耦合到虚拟WebRTC代理60的虚拟音频发送器74。可通信地耦合到虚拟WebRTC代理58的虚拟视频接收器68被配置为引导接收自虚拟WebRTC代理58的视频信号到可通信地耦合到虚拟WebRTC代理60的虚拟视频发送器77。可通信地耦合到虚拟WebRTC代理58的虚拟数据接收器70被配置为引导接收自虚拟WebRTC代理58的数据到可通信地耦合到虚拟WebRTC代理60的虚拟数据发送器79。以类似的方式,可通信地耦合到虚拟WebRTC代理60的虚拟音频接收器72被配置为引导接收自虚拟WebRTC代理60的音频信号到可通信地耦合到虚拟WebRTC代理58的虚拟音频发送器66。可通信地耦合到虚拟WebRTC代理60的虚拟视频接收器76被配置为引导接收自虚拟WebRTC代理58的视频信号到可通信地耦合到虚拟WebRTC代理60的虚拟视频发送器69。可通信地耦合到虚拟WebRTC代理60的虚拟数据接收器78被配置为引导接收自虚拟WebRTC代理60的数据到可通信地耦合到虚拟WebRTC代理60的虚拟数据发送器71。
[0031]从WebRTC客户端32和34的角度而言,作为结果的包括WebRTC交互流18和22的WebRTC交互会话并没有与通过直接对等连接传输的WebRTC交互会话显得不同。在作为结果的WebRTC交互会话期间,虚拟WebRTC代理管理器16可以通过访问来自虚拟音频接收器64和/或72、虚拟视频接收器68和/或76、和/或虚拟数据接收器70和/或78的输入从WebRTC交互流18和/或WebRTC交互流22提取内容。虚拟WebRTC代理管理器16还可以通过修改来自虚拟音频发送器66和/或74、虚拟视频发送器70和/或78、和/或虚拟数据发送器71和/或79的输出向WebRTC交互流18和/或WebRTC交互流22注入内容。因而,一些实施方式可以实现为内容可以被从WebRTC交互流18和/或WebRTC交互流22提取或者向WebRTC交互流18和/或WebRTC交互流22注入。在一些实施方式中,来自WebRTC交互流18和/或WebRTC交互流22的内容可以被虚拟WebRTC代理管理器16记录或转换。
[0032]在一些实施方式中,来自WebRTC交互流18和/或WebRTC交互流22的内容可以可选地被引导到或者接收自功能提供器80,如双向视频馈送82、双向音频馈送84和双向数据馈送85所指示的。功能提供器80可以提供附加的媒体处理功能,例如记录或转换WebRTC交互流18和/或WebRTC交互流22的内容。在一些实施方式中,媒体处理功能提供器80可以提供将要注入到WebRTC交互流18和/或WebRTC交互流22中的内容,例如音频或视频通知。
[0033]在图1的例子中,两个虚拟WebRTC代理58和60由虚拟WebRTC代理管理器16实例化。这一设定在WebRTC客户端32和WebRTC客户端34已知是不兼容的或者具有有限的兼容性的情况下是有用的。作为非限制性例子,WebRTC客户端32和34可以是具有对WebRTCAPI的不同级别的支持的web浏览器。为了修正这种不兼容性,WebRTC客户端32和/或WebRTC客户端34的特定客户端类型和/或客户端版本可以由WebRTC应用提供器52和/或虚拟WebRTC代理管理器16确定。在一些实施方式中,WebRTC客户端32和/或WebRTC客户端34的客户端类型和/或客户端版本可以基于作为WebRTC要约/应答交换的一部分而接收的数据、在虚拟WebRTC代理管理器16和WebRTC客户端32和/或WebRTC客户端34之间的查询/响应交换、HTTP头部、或由WebRTC客户端32和/或WebRTC客户端34提供的其他数据来确定。虚拟WebRTC代理管理器16可以随后实例化具有分别对应于WebRTC客户端32和34的客户端类型和/或版本的客户端类型和/或版本的虚拟WebRTC代理58和60。因为WebRTC客户端32和34的每一个都直接与同一类型和版本的虚拟WebRTC代理通信,WebRTC客户端32和34之间的不兼容性得以解决。
[0034]相反地,在WebRTC客户端32和34已知是兼容的情况下,虚拟WebRTC代理管理器16可以使用单个虚拟WebRTC代理在WebRTC客户端32和34之间提供WebRTC交互会话。提供单个虚拟WebRTC代理可以节省计算设备14的计算资源并且增加WebRTC服务器12的缩放性。这一实施方式随后参考附图4将进行详细讨论。
[0035]为了整体地描述图1的WebRTC应用提供器52和虚拟WebRTC代理管理器16的用于提供背靠背虚拟WebRTC代理的示范性操作,提供了图2。为了清楚起见,在描述图2时引用图1的元件。在图2的例子中,操作以WebRTC应用提供器52接收第一 WebRTC客户端32和第二 WebRTC客户端34之间的WebRTC要约/应答交换开始(方框86)。在一些实施方式中,WebRTC要约/应答包括为所需的WebRTC交互会话交换可被用于确定第一 WebRTC客户端32和第二 WebRTC客户端34的媒体类型和能力的WebRTC会话描述对象。
[0036]虚拟WebRTC代理管理器16接下来实例化一个或多个虚拟WebRTC代理58和60 (方框88)。一些实施方式可以实现为如果确定第一 WebRTC客户端32和第二 WebRTC客户端34是兼容的则实例化单个虚拟WebRTC代理。在一些实施方式中,如果确定第一 WebRTC客户端32和第二 WebRTC客户端34不兼容,虚拟WebRTC代理可以为第一 WebRTC客户端32和第二 WebRTC客户端34的每一个而被建立。作为非限制性示例,虚拟WebRTC代理管理器16可以通过在计算设备14上发起WebRTC客户端的一个或多个实例(如web浏览器)而实例化一个或多个虚拟WebRTC代理58和60。
[0037]虚拟WebRTC代理管理器16随后在第一 WebRTC客户端32和一个或多个虚拟WebRTC代理的一个(例如虚拟WebRTC代理58)之间建立第一 WebRTC交互流18,以及在第二 WebRTC客户端34和一个或多个虚拟WebRTC代理的一个(例如虚拟WebRTC代理60)之间建立第二 WebRTC交互流22 (方框90)。根据在此的一些实施方式,虚拟WebRTC代理管理器16和/或虚拟WebRTC代理58和60可以修改在WebRTC客户端32和34之间传递的数据以便于WebRTC交互流18和22的建立。例如,与WebRTC交互流18和22的每一个的端点的位置和/或身份相关的数据可以被修改以允许虚拟WebRTC代理58和60用作为它们的对应WebRTC客户端32和34的代理服务器。
[0038]虚拟WebRTC代理管理器16接下来经由该一个或多个虚拟WebRTC代理58和60,将第一 WebRTC交互流18的内容引导到第二 WebRTC交互流22,以及将第二 WebRTC交互流22的内容引导到第一 WebRTC交互流18 (方框92)。这在一个或多个虚拟WebRTC代理58和60之间实现了“背靠背”连接。在一些实施方式中,这可以通过使用由虚拟WebRTC代理管理器16提供的虚拟音频接收器和发送器、虚拟视频接收器和发送器、以及虚拟数据接收器和发送器来完成,如图1所示。
[0039]为了解释在使用图1的虚拟WebRTC代理58和60建立WebRTC交互会话期间的示范性通信流程,提供了图3。在图3中,图1的WebRTC客户端32、虚拟WebRTC代理58、WebRTC服务器12、虚拟WebRTC代理60、以及WebRTC客户端34的每一个都使用垂直虚线表示。可以理解的是WebRTC服务器12包括WebRTC应用提供器52和虚拟WebRTC代理管理器16,为了清楚起见它们被从本例中省略。进一步可以理解的是,对于本例,WebRTC客户端32和WebRTC客户端34的每一个都已从WebRTC服务器12下载了 WebRTC使能的web应用,例如 HTML5/JavaScript WebRTC 应用。
[0040]如图3所示,经由虚拟WebRTC代理58和60的WebRTC交互会话的建立以WebRTC客户端34向WebRTC服务器12发送会话描述对象(SDP)开始(在本例中,经由HTTPS连接)。WebRTC会话描述对象被称为SDP对象A并由箭头94指示。SDP对象A表示WebRTC要约/应答交换中的“要约”,并指定WebRTC客户端34支持并希望用于WebRTC交互会话中的媒体类型和能力。
[0041]WebRTC服务器12 (即虚拟WebRTC代理管理器16)实例化对应于WebRTC客户端34的虚拟WebRTC代理60,如箭头96所指示的。在一些实施方式中,WebRTC客户端34的客户端类型和/或客户端版本可以基于SDP对象A、WebRTC服务器12与WebRTC客户端34之间的查询/响应交换、HTTP头部、或由WebRTC客户端34提供的其他数据确定。虚拟WebRTC代理60可以实例化为具有已知与WebRTC客户端34兼容的客户端类型和/或客户端版本。WebRTC服务器12随后转发SDP对象A到WebRTC客户端32,如箭头98所示。
[0042]在WebRTC客户端32从WebRTC服务器12接收SDP对象A之后,WebRTC客户端32作为响应经由HTTPS发送被称为SDP对象B的WebRTC会话描述对象到WebRTC服务器12,如箭头100所示。在本例中SDP对象B表示WebRTC要约/应答交换中的“应答”。WebRTC服务器12 (即虚拟WebRTC代理管理器16)随后实例化对应于WebRTC客户端32的虚拟WebRTC代理58,如箭头102所示。一些实施方式可以实现为WebRTC客户端32的客户端类型和/或客户端版本可以基于SDP对象B、虚拟WebRTC代理管理器16与WebRTC客户端32之间的查询/响应交换、HTTP头部、或由WebRTC客户端32提供的其他数据来确定。虚拟WebRTC代理58可以实例化为具有已知与WebRTC客户端32兼容的客户端类型和/或客户端版本。WebRTC服务器12随后转发SDP对象B到WebRTC客户端34,如箭头104所示。
[0043]继续参考图3,WebRTC客户端32和WebRTC客户端34随后开始“打孔”(hoIepunching)以确定分别建立与虚拟WebRTC代理58和60的直接通信的最佳方式。这由图3中的双向箭头106和108指示。打孔是一种技术,其常使用诸如交互连接性建立(ICE)的协议,其中WebRTC客户端32和34都建立与揭示要用于直接通信中的外部和内部地址信息的未受限第三方服务器(未示出)的连接。
[0044]一旦由箭头106和108指示的ICE打孔成功,WebRTC客户端32和34开始秘钥协商以建立安全对等连接。在典型的端对端或对等(peer to peer)体系中,秘钥协商直接发生在WebRTC客户端32和34之间。然而,在本例中,WebRTC客户端32和34的每一个与其对应的虚拟WebRTC代理58和60协商,如双向箭头110和111所示。如果秘钥协商成功完成,对等连接建立在WebRTC客户端32和虚拟WebRTC代理58之间,以及在WebRTC客户端34和虚拟WebRTC代理60之间,如双向箭头112和113所示。
[0045]紧随建立与它们的对应虚拟WebRTC代理58和60的对等连接,WebRTC客户端32和34开始交换WebRTC媒体和/或数据流。如图3所示,WebRTC媒体和/或数据流从WebRTC客户端32和34传递到它们各自的虚拟WebRTC代理58和60,如双向箭头114和116所示。虚拟WebRTC代理58和60随后通过WebRTC服务器12发送WebRTC交互流18和22的内容,如双向箭头118和120所示。以这种方式,WebRTC服务器12可以选择性地控制、监控、和/或修改在WebRTC客户端32和34之间的WebRTC交互流18和/22的内容。
[0046]如以上参考图1所述,虚拟WebRTC代理管理器16可以在WebRTC客户端32和34之间使用单个虚拟WebRTC代理实现WebRTC交互会话,如果WebRTC客户端32和34已知是兼容的。为了解释这个实施方式,提供了图4。在图4中,示出了图1的示范性交互通信系统10。在本例中,然而,假设WebRTC客户端32和34已知是兼容的。例如,WebRTC客户端32和34可以是同一类型和版本的WebRTC使能的web浏览器。因而,在图4的实施方式中,虚拟WebRTC代理管理器16实例化WebRTC客户端32和34都可连接到的单个虚拟WebRTC代理122。虚拟WebRTC代理122从虚拟WebRTC应用提供器62下载虚拟WebRTC应用(未示出)。虚拟WebRTC应用可以包括用于使得虚拟WebRTC代理122能够与WebRTC客户端32和34以及与虚拟WebRTC代理管理器16通信的专用指令。在一些实施方式中,虚拟WebRTC应用可以使得虚拟WebRTC代理管理器16能够控制虚拟WebRTC代理122如何引导音频和/或视频数据到WebRTC客户端32和34。
[0047]在图4的例子中,虚拟WebRTC代理管理器16使得虚拟WebRTC代理122建立与WebRTC客户端32和34的WebRTC交互流18和22。虚拟WebRTC代理122随后可以利用其内置WebRTC API引导WebRTC交互流18的内容到WebRTC交互流22,以及反之。虚拟WebRTC代理122还可以引导WebRTC交互流18和/或WebRTC交互流22的内容到虚拟WebRTC代理管理器16。在作为结果的WebRTC交互会话期间,虚拟WebRTC代理管理器16可以通过访问发送自虚拟WebRTC代理122的内容,来从WebRTC交互流18和/或WebRTC交互流22中提取内容。例如,来自WebRTC交互流18和/或WebRTC交互流22的内容可以由虚拟WebRTC代理管理器16或者由功能提供器80记录或转换。虚拟WebRTC代理管理器16还可以引导虚拟WebRTC代理122向WebRTC交互流18和/或WebRTC交互流22中注入内容。
[0048]图5A-5C被提供用于更详细地解释图1的WebRTC应用提供器52和虚拟WebRTC代理管理器16提供背靠背虚拟WebRTC代理的示范性整体过程。为了解释的目的,图5A-5C参考图1和4的示范性交互通信系统10的元件。图5A详细说明了用于确定寻求建立WebRTC交互会话的WebRTC客户端32和34的兼容性、以及如果Web RTC客户端32和34兼容则提供虚拟WebRTC代理122的操作。图5B示出用于在WebRTC客户端32和34不兼容的情况下、或者如果出于某些其他理由而需要多个虚拟客户端时用于提供多个虚拟WebRTC代理58和60的操作。图5C解释了用于提供包括从WebRTC交互流18、22提取内容、向其中注入内容、记录和/或转换其内容的附加功能的操作。
[0049]在图5A中,处理以WebRTC应用提供器52接收在第一 WebRTC客户端32和第二WebRTC客户端34之间的WebRTC要约/应答交换开始(方框124)。基于WebRTC要约/应答交换,虚拟WebRTC代理管理器16确定第一 WebRTC客户端32和第二 WebRTC客户端34是否已知是兼容的(方框126)。在一些实施方式中,确定第一 WebRTC客户端32和第二WebRTC客户端34的兼容性可以包括比较第一 WebRTC客户端32和第二 WebRTC客户端34的每一个的客户端类型和/或客户端版本。
[0050]如果确定第一 WebRTC客户端32和第二 WebRTC客户端34兼容,虚拟WebRTC代理管理器16可以在第一 WebRTC客户端32和第二 WebRTC客户端34之间使用单个虚拟WebRTC代理122实现WebRTC交互会话,如以上结合图4所述的。相应地,虚拟WebRTC代理管理器16实例化与第一 WebRTC客户端32和第二 WebRTC客户端34都兼容的虚拟WebRTC代理122 (方框128)。作为非限制性例子,虚拟WebRTC代理管理器16可以执行与第一 WebRTC客户端32和/或第二 WebRTC客户端34具有同一客户端类型和/或版本的WebRTC客户端。虚拟WebRTC代理管理器16随后在第一 WebRTC客户端32和虚拟WebRTC代理122之间建立第一 WebRTC交互流18 (方框130)。虚拟WebRTC代理管理器16还在第二 WebRTC客户端34和虚拟WebRTC代理122之间建立第二 WebRTC交互流22 (方框132)。经由虚拟WebRTC代理122,虚拟WebRTC代理管理器16将第一 WebRTC交互流18的内容引导到第二 WebRTC交互流22,以及将第二 WebRTC交互流22的内容弓丨导到第一 WebRTC交互流18 (方框134)。以这种方式,虚拟WebRTC代理122可以在WebRTC客户端32和34之间实现WebRTC交互会话,同时最小化计算资源的使用。处理随后在图5C的方框136处恢复。
[0051]返回图5A的确定方框126,如果虚拟WebRTC代理管理器16确定第一 WebRTC客户端32和第二 WebRTC客户端34并不完全兼容,虚拟WebRTC代理管理器16可以使用两个虚拟WebRTC代理58和60在第一 WebRTC客户端32和第二 WebRTC客户端34之间实现WebRTC交互会话,如以上关于图1所述的。相应地,处理在图5B的方框138处恢复。虚拟WebRTC代理管理器16实例化与第一 WebRTC客户端32兼容的第一虚拟WebRTC代理58 (方框138)。虚拟WebRTC代理管理器16还实例化与第二 WebRTC客户端34兼容的第二虚拟WebRTC代理60 (方框140)。在一些实施方式中,虚拟WebRTC代理58和60分别具有与WebRTC客户端32和34相同的客户端类型和/或客户端版本。
[0052]虚拟WebRTC代理管理器16随后在第一 WebRTC客户端32和第一虚拟WebRTC代理58之间建立第一 WebRTC交互流18 (方框142)。虚拟WebRTC代理管理器16还在第二WebRTC客户端34和第二虚拟WebRTC代理60之间建立第二 WebRTC交互流22 (方框144)。因为第一 WebRTC客户端32和第二 WebRTC客户端34的每一个直接与它们各自的兼容虚拟WebRTC代理58和60进行交互,不会产生关于WebRTC交互流18和22的兼容性问题。
[0053]经由第一虚拟WebRTC代理58和第二虚拟WebRTC代理60,虚拟WebRTC代理管理器16将第一 WebRTC交互流18的内容弓丨导到第二 WebRTC交互流22,以及将第二 WebRTC交互流22的内容引导到第一 WebRTC交互流18(方框146)。以这种方式,虚拟WebRTC代理58和60被“背靠背”地连接,从而虚拟WebRTC代理58的音频、视频和/或数据输出成为虚拟WebRTC代理60的输入,以及反之。处理随后在图5C的方框136处恢复。
[0054]现在参考图5C,虚拟WebRTC代理管理器16此时可以访问第一 WebRTC交互流18和第二 WebRTC交互流22的内容,并且可以提供附加的媒体处理功能。例如,在一些实施方式中,虚拟WebRTC代理管理器16可以从第一 WebRTC交互流18、第二 WebRTC交互流22、或它们的组合提取内容(方框136)。一些实施方式可以实现为虚拟WebRTC代理管理器16可以向第一 WebRTC交互流18、第二 WebRTC交互流22、或它们的组合注入内容(方框148)。例如,虚拟WebRTC代理管理器16可以向WebRTC交互流18和/或22中插入附加的音频、视频和/或数据。根据一些实施方式,虚拟WebRTC代理管理器16可以记录第一 WebRTC交互流18的内容、第二 WebRTC交互流22的内容、或它们的组合(方框150)。在一些实施方式中,虚拟WebRTC代理管理器16可以转换第一 WebRTC交互流18的内容、第二 WebRTC交互流22的内容、或它们的组合(方框152)。
[0055]虚拟WebRTC代理管理器16随后确定第一 WebRTC交互流18或第二 WebRTC交互流22的任一个是否已经终止(方框154)。如果第一 WebRTC交互流18和第二 WebRTC交互流22都仍然激活,处理返回至图5C的方框136。否则,虚拟WebRTC代理管理器16在合适时终止剩余的激活WebRTC交互流18或22 (方框156)。
[0056]图6以适合于执行指令以实现在此描述的功能的示范性计算机系统160的示范性形式提供处理系统158的示意图表示。在一些实施方式中,处理系统158可以执行指令以实现图1的WebRTC应用提供器52和虚拟WebRTC代理管理器16的功能。在这一点上,处理系统158可以包括计算机系统160,其中用于使得处理系统158运行在此描述的方法中的任意一个或多个的一组指令被执行。处理系统158可以连接到(作为非限制性例子,组网连接)局域网(LAN)、内部网、外部网或互联网中的其他机器。处理系统158可以工作于客户端-服务器网络环境下,或作为端对端(或分布式)网络环境中的端设备。尽管只示出了单个处理系统158,术语“控制器”和“服务器”应当也被认为包括单独地或联合地执行一组(或多组)指令以实现在此描述的方法的任意一个或多个的设备的任意集合。处理系统158可以是服务器、个人计算机、桌面计算机、膝上型计算机、个人数字助理(PDA)、计算平板电脑、移动设备、或者任意其他设备,并且可以表现为服务器或用户的计算机,作为非限制性例子。
[0057]示范性计算机系统160包括处理设备或处理器162,主存储器164 (作为非限制性例子,只读存储器(ROM)、闪存、诸如同步DRAM (SDRAM)的动态随机访问存储器(DRAM)等等),以及静态存储器166 (作为非限制性例子,闪存、静态随机访问存储器(SRAM)等等),它们可以经由总线168互相通信。可替代地,处理设备162可以直接地或经由一些其他连接方式连接到主存储器164和/或静态存储器166。
[0058]处理设备162代表一个或多个处理设备,例如微处理器、中央处理单元(CPU)或者类似物。更特别地,处理设备162可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、执行其他指令集的处理器、或者执行指令集的组合的处理器。处理设备162被配置为执行用于实现在此描述的操作和步骤的指令170和/或缓存的指令172中的处理逻辑。
[0059]计算机系统160可以进一步包括形式为网络接口设备174的通信接口。它还可以包括或者不包括输入176以接收当执行指令170、172时要通信到计算机系统160的输入和选择。它还可以包括或不包括输出178,包括但不限定为显示器180。显示器180可以是视频显示单元(作为非限制性例子,液晶显示器(LCD)或阴极射线管(CRT))、文字数字输入设备(作为非限制性例子,键盘)、指针控制设备(作为非限制性例子,鼠标)、和/或触摸屏设备(作为非限制性例子,平板输入设备或屏幕)。
[0060]计算机系统160可以包括或不包括数据存储设备182,其包括使用驱动器184在计算机可读介质186中存储在此描述的功能,计算机可读介质186上存储了实施在此描述的方法或功能的任意一个或多个的一个或多个指令集188 (例如软件)。功能可以包括处理系统158、参与的用户设备、和/或许可服务器的方法和/或其他功能,作为非限制性例子。当被计算机系统160执行期间,一个或多个指令集188也可以完全地或至少部分地驻存在主存储器164和/或处理设备162中。主存储器164和处理设备162还组成机器可访问存储媒体。指令170、172和/或188可以进一步在网络190上经由网络接口设备174发送或接收。网络190可以是内部网络或者互联网络。
[0061]尽管计算机可读介质186在示范性实施方式中被示为单个媒体,术语“机器可访问存储媒体”应当被认为包括存储一个或多个指令集188的单个媒体或多个媒体(作为非限制性例子,集中或分布式数据库、和/或关联的缓存和服务器)。术语“机器可访问存储介质”还应当被认为包括能够存储、编码或携带用于由机器执行的指令集170、172和/或188的、以及使得机器运行在此公开的方法的任意一个或多个的任意介质。术语“机器可访问存储介质”相应地应当认为包括但不限于固态存储器、光或磁媒体、以及载波信号。
[0062]在此公开的实施方式可以实施在硬件中以及在存储在硬件上的指令中,该指令并且可以驻存在作为非限制性例子的随机访问存储器(RAM)、闪存、只读存储器(ROM)、电子可编程ROM(EPROM)、电子可擦写可编程ROM (EEPROM)、寄存器、硬盘、可移除磁盘、CD-ROM或者本领域已知的任意其他形式的计算机可读介质中。示范性存储介质被耦合到处理器从而处理器能够从存储介质读取信息并且向存储介质写入信息。可替换的,存储介质可以集成到处理器中。处理器和存储介质可以驻存在专门应用集成电路(ASIC)中。ASIC可以驻存在远程站中。可替代地,处理器和存储介质可以作为离散的组件驻存在远程站、基站或服务器中。
[0063]需要注意的是在这里的任意示范性实施方式中描述的操作步骤被描述为提供示例和讨论。描述的操作可以执行于很多种不同顺序中而不是所示的顺序。进一步的,描述在单个操作步骤中的操作可以实际上被执行于多个不同步骤中。此外,描述在示范性实施方式中的一个或多个操作步骤可以被组合。可以理解的是在流程图中示出的操作步骤可以服从于很多种不同的修改,这对于本领域技术人员而言是显然的。本领域技术人员也会理解信息和信号可以使用任意各种不同技术和提巧表示。作为非限制性例子,可能在上述说明书全文中引用的数据、指令、命令、信息、信号、比特、符号和芯片可以由电压、电流、电磁波、磁场或微粒、光场或微粒、或它们的任意组合来表不。
[0064]本公开的上述说明书被提供用于使得任意本领域技术人员能够制造或使用本公开。对本公开的各种修改对本领域技术人员而言是显然的,并且在此定义的基本原理可以应用到其他变化中而不脱离本公开的精神或范围。因而,本公开并不意图受限于在此描述的示例和设计,而应当符合与在此公开的的原理和新颖特征相符的最大范围。
【权利要求】
1.一种用于提供背靠背虚拟web实时通信(WebRTC)代理的方法,包括: 由在计算设备上执行的WebRTC服务器接收第一 WebRTC客户端和第二 WebRTC客户端之间的WebRTC要约/应答交换; 实例化一个或多个虚拟WebRTC代理; 在第一 WebRTC客户端和所述一个或多个虚拟WebRTC代理中的一个之间建立第一WebRTC交互流,以及在第二 WebRTC客户端和所述一个或多个虚拟WebRTC代理中的一个之间建立第二 WebRTC交互流;以及 经由所述一个或多个虚拟WebRTC代理,将第一 WebRTC交互流的内容引导到第二WebRTC交互流,以及将第二 WebRTC交互流的内容引导到第一 WebRTC交互流。
2.如权利要求1所述的方法,进一步包括从第一WebRTC交互流或第二 WebRTC交互流、或它们的组合提取内容。
3.如权利要求1所述的方法,进一步包括向第一WebRTC交互流或第二WebRTC交互流、或它们的组合注入内容。
4.如权利要求1所述的方法,进一步包括记录第一WebRTC交互流的内容或第二WebRTC交互流的内容、或它们的组合。
5.如权利要求1所述的方法,进一步包括转换第一WebRTC交互流的内容或第二WebRTC交互流的内容、或它们的组合。
6.如权利要求1所述的方法,进一步包括基于WebRTC要约/应答交换、在所述WebRTC服务器与第一 WebRTC客户端和第二 WebRTC客户端中的一个或多个之间的查询/响应交换、或者超文本传输协议(HTTP)头部数据、或它们的组合,确定第一 WebRTC客户端和第二WebRTC客户端是否兼容。
7.如权利要求6所述的方法,其中实例化所述一个或多个虚拟WebRTC代理包括:响应于确定第一 WebRTC客户端与第二 WebRTC客户端兼容,实例化与第一 WebRTC客户端和第二WebRTC客户端兼容的虚拟WebRTC代理。
8.如权利要求6所述的方法,其中实例化所述一个或多个虚拟WebRTC代理包括:响应于确定第一 WebRTC客户端与第二 WebRTC客户端不兼容: 实例化与第一 WebRTC客户端兼容的第一虚拟WebRTC代理;以及 实例化与第二 WebRTC客户端兼容的第二虚拟WebRTC代理。
9.一种用于提供背靠背虚拟web实时通信(WebRTC)代理的系统,包括: 至少一个通信接口 ;以及 与该至少一个通信接口相关联的WebRTC服务器,该WebRTC服务器包括WebRTC应用提供器,所述WebRTC应用提供器被配置为接收第一 WebRTC客户端和第二 WebRTC客户端之间的WebRTC要约/应答交换;以及 所述WebRTC服务器进一步包括虚拟WebRTC代理管理器,所述虚拟WebRTC代理管理器被配置为: 实例化一个或多个虚拟WebRTC代理; 在第一 WebRTC客户端和所述一个或多个虚拟WebRTC代理中的一个之间建立第一WebRTC交互流,以及在第二 WebRTC客户端和所述一个或多个虚拟WebRTC代理中的一个之间建立第二 WebRTC交互流;以及 经由所述一个或多个虚拟WebRTC代理,将第一 WebRTC交互流的内容引导到第二WebRTC交互流,以及将第二 WebRTC交互流的内容引导到第一 WebRTC交互流。
10.一种非暂时性计算机可读介质,在其上存储有计算机可执行指令,所述指令使得处理器执行一种方法,其包括: 接收第一 WebRTC客户端和第二 WebRTC客户端之间的web实时通信(WebRTC)要约/应答交换; 实例化一个或多个虚拟WebRTC代理; 在第一 WebRTC客户端和一个或多个虚拟WebRTC代理的一个之间建立第一 WebRTC交互流,以及在第二 WebRTC客户端和一个或多个虚拟WebRTC代理的一个之间建立第二WebRTC交互流;以及 经由一个或多个虚拟WebRTC代理,将第一 WebRTC交互流的内容弓丨导到第二 WebRTC交互流,以及将第二 WebRTC交互流的内容引导到第一 WebRTC交互流。
【文档编号】H04L29/06GK104253857SQ201410399696
【公开日】2014年12月31日 申请日期:2014年6月30日 优先权日:2013年6月30日
【发明者】A·B·约翰斯顿, J·H·约亚库姆 申请人:阿瓦亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1