虚拟web实时通信网关以及相关的方法、系统的制作方法

文档序号:7811487阅读:185来源:国知局
虚拟web实时通信网关以及相关的方法、系统的制作方法
【专利摘要】本发明涉及虚拟WEB实时通信网关以及相关的方法、系统。虚拟Web实时通信(WEBRTC)网关,以及相关的方法、系统和计算机可读媒体在此公开了虚拟Web实时通信(WebRTC)网关,相关的方法、系统和计算机可读媒体也被公开。在一个实施方式中,用于提供虚拟WebRTC网关的方法包括实例化对应于WebRTC客户端的虚拟WebRTC代理,以及实例化对应于非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 andRTCWEB 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]现有的用于提供交互流的协议,例如会话发起协议(SIP)、H.323以及Jingle,由于WebRTC提供的新特征和媒体扩展而不兼容WebRTC。因此,采用这些现有协议以添加WebRTC能力的新型网关应用要包括非凡的开发努力。此外,当前由不同WebRTC客户端提供的不同水平的WebRTC支持可以为网关应用提供进一步的兼容性并且支持问题。


【发明内容】

[0005]在此详细说明书中公开的实施方式提供了虚拟Web实时通信(WebRTC)网关。相关的方法、系统和计算机可读媒体也被公开。在一些实施方式中,WebRTC客户端和非WebRTC客户端通过交互流服务器寻求建立交互会话,该交互流服务器实例化虚拟WebRTC代理和虚拟非WebRTC代理。交互流服务器可以使得WebRTC客户端与虚拟WebRTC代理建立WebRTC交互流,并且可以使得非WebRTC客户端与虚拟非WebRTC代理建立非WebRTC交互流。交互流服务器随后通过引导来自虚拟WebRTC代理的输出作为进入虚拟非WebRTC代理的输入而“背靠背(back-to-back) ”连接虚拟WebRTC代理和虚拟非WebRTC代理,反之亦然。通过这种方式,交互流服务器可以在WebRTC客户端和非WebRTC客户端之间提供虚拟WebRTC网关,同时还提供附加的媒体处理和处置功能。作为非限制性例子,媒体处理和处置功能可以包括对WebRTC和/或非WebRTC交互流的记录和/或监控,和/或从WebRTC和/或非WebRTC交互流提取内容或者向其中注入内容。
[0006]在这点上,在一个实施方式中,提供了一种用于提供虚拟WebRTC网关的方法。该方法包括由执行于计算设备上的虚拟WebRTC网关实例化对应于WebRTC客户端的虚拟WebRTC代理。该方法进一步包括实例化对应于非WebRTC客户端的虚拟非WebRTC代理。该方法还包括在虚拟WebRTC代理和WebRTC客户端之间建立WebRTC交互流。该方法附加地包括在虚拟非WebRTC代理和非WebRTC客户端之间建立非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代理将WebRTC交互流的内容引导到非WebRTC交互流,以及将非WebRTC交互流的内容引导到WebRTC交互流。
[0008]在另一个实施方式中,提供了非暂时性计算机可读介质。该非暂时性计算可读介质上存储有计算机可执行指令以使得处理器实现一种方法,该方法包括实例化对应于WebRTC客户端的虚拟WebRTC代理。由计算机可执行指令实施的该方法进一步包括实例化对应于非WebRTC客户端的虚拟非WebRTC代理。由计算机可执行指令实施的该方法还包括在虚拟WebRTC代理和WebRTC客户端之间建立WebRTC交互流。由计算机可执行指令实施的该方法附加地包括在虚拟非WebRTC代理和非WebRTC客户端之间建立非WebRTC交互流。由计算机可执行指令实施的该方法进一步包括经由虚拟WebRTC代理和虚拟非WebRTC代理将WebRTC交互流的内容弓I导到非WebRTC交互流,以及将非WebRTC交互流的内容弓I导到WebRTC交互流。

【专利附图】

【附图说明】
[0009]被结合于此并形成本说明书的一部分的随附的附图示出本公开的多个方面,与说明书一起用于解释本公开的原理。
[0010]图1是示出在Web实时通信(WebRTC)客户端与非WebRTC客户端之间经由包括虚拟WebRTC网关的交互流服务器的交互会话的概念图;
[0011]图2是示出图1中用于在WebRTC客户端和非WebRTC客户端之间实现交互操作性的虚拟WebRTC网关的示范性操作的流程图;
[0012]图3是示出在包括图1的虚拟WebRTC网关的示范性系统中从WebRTC客户端向非WebRTC客服端的外向(outbound)交互请求的示范性通信流的图;
[0013]图4是示出在包括图1的虚拟WebRTC网关的示范性系统中从非WebRTC客户端向WebRTC客户端的内向(inbound)交互请求的示范性通信流的图;
[0014]图5A和5B是示出用于提供能够实现从WebRTC客户端向非WebRTC客户端的外向和/或内向交互请求、以及附加的媒体处理和处置能力的虚拟WebRTC网关的更详细示范性操作的流程图;
[0015]图6是可以包括图1的虚拟WebRTC网关的示范性基于处理器的系统的方块图。

【具体实施方式】
[0016]现在参考附图,描述了本公开的几个示范性实施方式。措辞“示范性”用在此处的意思是“作为示例、例子或说明”。在此被描述为“示范性”的实施方式并不一定被解释为相比其他实施方式是优选的或有利的。
[0017]在此详细说明书中公开的实施方式提供了虚拟Web实时通信(WebRTC)网关。相关的方法、系统和计算机可读媒体也被公开。在一些实施方式中,WebRTC客户端和非WebRTC客户端通过交互流服务器寻求建立交互会话,该交互流服务器实例化虚拟WebRTC代理和虚拟非WebRTC代理。交互流服务器可以使得WebRTC客户端与虚拟WebRTC代理建立WebRTC交互流,并且可以使得非WebRTC客户端与虚拟非WebRTC代理建立非WebRTC交互流。交互流服务器随后通过引导来自虚拟WebRTC代理的输出作为进入虚拟非WebRTC代理的输入而“背对背(back-to-back) ”连接虚拟WebRTC代理和虚拟非WebRTC代理,反之亦然。通过这种方式,交互流服务器可以在WebRTC客户端和非WebRTC客户端之间提供虚拟WebRTC网关,同时还提供附加的媒体处理和处置功能。作为非限制性例子,媒体处理和处置功能可以包括对WebRTC和/或非WebRTC交互流的记录和/或监控,和/或从WebRTC和/或非WebRTC交互流提取内容或者向其中注入内容。
[0018]在这点上,在一个实施方式中,提供了一种用于提供虚拟WebRTC网关的方法。该方法包括由执行于计算设备上的虚拟WebRTC网关实例化对应于WebRTC客户端的虚拟WebRTC代理。该方法进一步包括实例化对应于非WebRTC客户端的虚拟非WebRTC代理。该方法还包括在虚拟WebRTC代理和WebRTC客户端之间建立WebRTC交互流。该方法附加地包括在虚拟非WebRTC代理和非WebRTC客户端之间建立非WebRTC交互流。该方法进一步包括经由虚拟WebRTC代理和虚拟非WebRTC代理将WebRTC交互流的内容引导到非WebRTC交互流,以及将非WebRTC交互流的内容引导到WebRTC交互流。
[0019]图1示出提供在此公开的虚拟WebRTC网关的示范性交互通信系统10。特别地,该示范性交互通信系统10提供执行在计算设备14上的交互流服务器12,其包括虚拟WebRTC网关16。虚拟WebRTC网关16处理虚拟WebRTC代理和虚拟非WebRTC代理的实例化,并且协调交互流内容的建立和引导以在WebRTC端点和非WebRTC端点之间提供互操作性。在此使用的“虚拟WebRTC代理”指的是WebRTC使能的浏览器的实例或者在虚拟WebRTC网关16的控制下执行于计算设备14上的其他客户端应用。“虚拟非WebRTC代理”指的是在虚拟WebRTC网关16的控制下执行于计算设备14上的客户端应用的实例,其根据不同于WebRTC的协议提供实时通信能力。作为非限制性示例,这样的非WebRTC协议可以包括会话发起协议(SIP)、H.323、Jingle或提供以会话为中心的交互流的其他协议。“WebRTC交互流”,如在此公开的,指根据WebRTC在两个或更多端点之间传递的交互媒体流和/或交互数据流,而“非WebRTC交互流”指根据不同于WebRTC的协议的交互媒体流和/或交互数据流。作为非限制性示例,组成WebRTC或非WebRTC交互流的交互媒体流可以包括实时音频流和/或实时视频流,或者其他实时媒体或数据流。包括交互流的数据和/或媒体可以被在此统称为“内容”。
[0020]为了解释的目的,在图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上。
[0021]图1的计算设备20包括WebRTC客户端32。WebRTC客户端32可以是WebRTC使能的Web浏览器应用、专用通信应用、移动应用、或者无接口(interface-less)应用,例如守护(daemon)或服务应用,作为非限制性示例。WebRTC客户端32实施对于在计算设备20与计算设备14之间提供WebRTC交互流18是必要的协议、编解码器和应用编程接口(API)。图1的计算设备24包括非WebRTC客户端34,其基于不同于WebRTC的协议提供实时通信能力。非WebRTC客户端34可以是Web浏览器应用、专用通信应用、移动应用、或者无接口(interface-less)应用,例如守护(daemon)或服务应用,作为非限制性示例。作为非限制性示例,非WebRTC客户端34可以是提供SIP信令栈和与SIP网络或服务兼容的实时传输协议(RTP)媒体栈的SIP用户代理客户端。在一些实施方式中,其他非WebRTC客户端34的非限制性示例可以是H.323客户端应用或Jingle客户端应用。非WebRTC客户端34实施对于在计算设备24与计算设备14之间提供非WebRTC交互流22是必要的协议、编解码器和应用编程接口(API)。
[0022]如图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所示的更多或更少的设备。
[0023]因为WebRTC和非WebRTC协议基本上是不兼容的,WebRTC客户端32和非WebRTC客户端34不能相互直接经由对等连接建立交互流。为了在WebRTC客户端32和非WebRTC客户端34之间实现互操作性,虚拟WebRTC网关16提供虚拟WebRTC代理52和虚拟非WebRTC代理54。在图1的例子中,WebRTC客户端32经由超文本传输协议(HTTP) /超文本安全传输协议(HTTPS)连接58从交互流服务器12的WebRTC应用提供者56下载WebRTCweb应用(未示出)。在一些实施方式中,WebRTC web应用可以包括使用HTML5提供丰富用户接口、并且使用JavaScript处理用户输入并与WebRTC应用提供者56通信的HTML5/JavaScriptweb应用。虚拟WebRTC网关16随后实例化对应于WebRTC客户端32的虚拟WebRTC代理52。在一些实施方式中,虚拟WebRTC网关16可以通过在计算设备14上发起WebRTC客户端的实例,例如Web浏览器,而实例化虚拟WebRTC代理52。一些实施方式可以实现虚拟WebRTC代理52被执行于操作系统的虚拟实例之中。
[0024]在实例化之后,虚拟WebRTC代理52由虚拟WebRTC网关16引导从虚拟WebRTC应用提供者60下载虚拟WebRTC应用(未示出)。一些实施方式可以实现为虚拟WebRTC应用提供者60可通信地耦合到虚拟WebRTC网关16。在一些实施方式中,虚拟WebRTC应用提供者60可以集成到虚拟WebRTC网关16和/或WebRTC应用提供者56中或者组成虚拟WebRTC网关16和/或WebRTC应用提供者56的元件。虚拟WebRTC应用包括用于与虚拟WebRTC代理52的WebRTC API接口的专用指令。虚拟WebRTC代理52可以经由虚拟WebRTC应用与WebRTC客户端32通信,以及与虚拟WebRTC网关16通信。
[0025]虚拟WebRTC网关16还实例化对应于非WebRTC客户端34的虚拟非WebRTC代理54。在一些实施方式中,虚拟WebRTC网关16可以通过在计算设备14上发起非WebRTC客户端的一个或多个实例,例如SIP用户代理客户端、H.323客户端或者Jingle客户端,而实例化虚拟非WebRTC代理54。一些实施方式可以实现虚拟非WebRTC代理54被执行于操作系统的虚拟实例之中。
[0026]虚拟WebRTC网关16使得虚拟WebRTC代理52建立与WebRTC客户端32的WebRTC交互流18,并且使得虚拟非WebRTC代理54建立与非WebRTC客户端34的非WebRTC交互流22。虚拟WebRTC网关16随后“背靠背”连接虚拟WebRTC代理52和虚拟非WebRTC代理54(即由虚拟WebRTC代理52的WebRTC交互流18输出的内容被引导作为进入虚拟非WebRTC代理54的非WebRTC交互流22的输入,反之亦然)。为了完成“背靠背”连接,虚拟WebRTC网关16提供虚拟音频接收器(Rx) 62、虚拟音频发送器(Tx) 64、虚拟视频接收器66、虚拟视频发送器68、虚拟数据接收器70以及虚拟数据发送器72,虚拟WebRTC代理52可通信地与它们耦合。类似地,虚拟非WebRTC代理54可通信地耦合到由虚拟WebRTC网关16提供的虚拟音频接收器74、虚拟音频发送器76、虚拟视频接收器78、虚拟视频发送器80、虚拟数据接收器82以及虚拟数据发送器84。
[0027]随着WebRTC交互流18和非WebRTC交互流22的开始,虚拟WebRTC代理52和虚拟非WebRTC代理54转发接收自对应WebRTC交互流18和非WebRTC交互流22的音频信号到虚拟音频接收器62和74。虚拟WebRTC代理52和虚拟非WebRTC代理54还转发接收自对应WebRTC交互流18和非WebRTC交互流22的视频信号到虚拟视频接收器66和78,并转发接收自对应的WebRTC交互流18和非WebRTC交互流22的数据到虚拟数据接收器70和82。
[0028]可通信地耦合到虚拟WebRTC代理52的虚拟音频接收器62被配置为引导接收自虚拟WebRTC代理52的音频信号到可通信地耦合到虚拟非WebRTC代理54的虚拟音频发送器76。可通信地耦合到虚拟WebRTC代理52的虚拟视频接收器66被配置为引导接收自虚拟WebRTC代理52的视频信号到可通信地耦合到虚拟非WebRTC代理54的虚拟视频发送器80。可通信地耦合到虚拟WebRTC代理52的虚拟数据接收器70被配置为引导接收自虚拟WebRTC代理52的数据到可通信地耦合到虚拟非WebRTC代理54的虚拟数据发送器84。
[0029]以类似的方式,可通信地耦合到虚拟非WebRTC代理54的虚拟音频接收器74被配置为引导接收自虚拟非WebRTC代理54的音频信号到可通信地耦合到虚拟WebRTC代理52的虚拟音频发送器64。可通信地耦合到虚拟非WebRTC代理54的虚拟视频接收器78被配置为引导接收自虚拟非WebRTC代理54的视频信号到可通信地耦合到虚拟WebRTC代理52的虚拟视频发送器68。可通信地耦合到虚拟非WebRTC代理54的虚拟数据接收器82被配置为引导接收自虚拟非WebRTC代理54的数据到可通信地耦合到虚拟WebRTC代理52的虚拟数据发送器72。
[0030]可以理解的是,在一些实施方式中,取决于由虚拟非WebRTC代理54和/或虚拟非WebRTC客户端34提供的能力和功能,非WebRTC交互流22的音频信号、视频信号、和/或数据中的一个或多个是不可访问的。例如,虚拟非WebRTC代理54和/或虚拟非WebRTC客户端34的一些实施方式可以提供音频信号和视频信号,但不能提供数据流和/或仅能使用特有的标准提供数据流。在这样的实施方式中,虚拟音频接收器62和/或74、虚拟视频接收器66和/或78、以及虚拟数据接收器70和/或82可以省略。
[0031]从WebRTC客户端32和非WebRTC客户端34的角度而言,作为结果的包括WebRTC交互流18和非WebRTC交互流22的交互会话并没有与在直接对等连接上传输的交互会话显得不同。在作为结果的交互会话期间,虚拟WebRTC网关16可以通过访问来自虚拟音频接收器62和/或74、虚拟视频接收器66和/或78、和/或虚拟数据接收器70和/或82的输入从WebRTC交互流18和/或非WebRTC交互流22提取内容。虚拟WebRTC网关16还可以通过修改来自虚拟音频发送器64和/或76、虚拟视频发送器68和/或80、和/或虚拟数据发送器72和/或84的输出向WebRTC交互流18和/或非WebRTC交互流22注入内容。因而,一些实施方式可以实现为内容可以被从WebRTC交互流18和/或非WebRTC交互流22提取或者向WebRTC交互流18和/或非WebRTC交互流22注入。在一些实施方式中,来自WebRTC交互流18和/或非WebRTC交互流22的内容可以被虚拟WebRTC网关16记录或转换。
[0032]在一些实施方式中,来自WebRTC交互流18和/或非WebRTC交互流22的内容可以可选地被引导到或者接收自功能提供者86,如双向视频馈送88、双向音频馈送90和双向数据馈送92所指示的。功能提供者86可以提供附加的媒体处理和处置功能,例如记录或转换WebRTC交互流18和/或非WebRTC交互流22的内容。在一些实施方式中,功能提供者86可以提供将要注入到WebRTC交互流18和/或非WebRTC交互流22中的内容,例如音频或视频通知。
[0033]在图1的例子中,虚拟WebRTC网关16和/或WebRTC应用提供者56在实例化虚拟WebRTC代理52之前可以确定WebRTC客户端32的具体客户端类型和/或客户端版本。在一些实施方式中,WebRTC客户端32的客户端类型和/或客户端版本可以基于作为WebRTC要约/应答交换的一部分而接收的数据、在虚拟WebRTC网关16和WebRTC客户端32之间的查询/响应交换、HTTP头部数据、或由WebRTC客户端32提供的其他数据来确定。虚拟WebRTC网关16可以随后实例化具有对应于WebRTC客户端32的客户端类型和/或客户端版本的客户端类型和/或客户端版本的虚拟WebRTC代理52。因为WebRTC客户端32直接与同一类型和版本的虚拟WebRTC代理52通信,由WebRTC客户端32对WebRTC的不同水平的支持导致的不兼容性得以解决。
[0034]在一些实施方式中,可以提供呼叫控制应用提供者94以进一步便于管理WebRTC客户端32和非WebRTC客户端34之间的交互会话。作为非限制性示例,呼叫控制应用提供者94可以提供可经由HTTP/HITPS连接96被下载到WebRTC客户端32的呼叫控制应用(未示出)。呼叫控制应用提供者94可以提供附加的功能用于经由呼叫控制应用提供者94生成和发送适当的交互流管理命令到虚拟非WebRTC代理54。例如,如果非WebRTC客户端34是SIP客户端,呼叫控制应用提供者94可以提供具备具有用于发起、终止、会议和/或传送SIP交互会话的HTML5接口的呼叫控制应用的WebRTC客户端32。呼叫控制应用提供者94随后可以将来自WebRTC客户端32的输入转换为对应的SIP命令,并且可以中继对应的SIP命令到虚拟非WebRTC代理54。
[0035]为了整体地描述图1的虚拟WebRTC网关16的用于提供虚拟WebRTC代理52和虚拟非WebRTC代理54的示范性操作,提供了图2。为了清楚起见,在描述图2时引用图1的元件。在图2的例子中,操作以WebRTC应用提供者56实例化对应于WebRTC客户端32的虚拟WebRTC代理52开始(方框98)。作为非限制性例子,虚拟WebRTC网关16可以通过在计算设备14上发起WebRTC客户端的实例,例如Web浏览器,来实例化虚拟WebRTC代理52。虚拟WebRTC网关16随后实例化对应于非WebRTC客户端34的虚拟非WebRTC代理54 (方框100)。在一些实施方式中,虚拟WebRTC网关16可以通过在计算设备14上发起非WebRTC客户端的实例,例如SIP用户代理客户端、H.323客户端或Jingle客户端,来实例化虚拟非WebRTC 代理 54。
[0036]虚拟WebRTC网关16随后在虚拟WebRTC代理52和WebRTC客户端32之间建立WebRTC交互流18(方框102)。虚拟WebRTC网关16还在虚拟非WebRTC代理54和非WebRTC客户端34之间建立非WebRTC交互流22 (方框104)。虚拟WebRTC网关16接下来经由该虚拟WebRTC代理52和虚拟非WebRTC代理54,将WebRTC交互流18的内容引导到非WebRTC交互流22,以及将非WebRTC交互流22的内容引导到WebRTC交互流18(方框106)。这在虚拟WebRTC代理52和虚拟非WebRTC代理54之间实现了 “背靠背”连接。在一些实施方式中,这可以通过使用由虚拟WebRTC网关16提供的虚拟音频接收器62、74以及发送器64、76,虚拟视频接收器66、78以及发送器68、80,以及虚拟数据接收器70、82以及发送器72、84来完成,如图1所示。
[0037]为了解释用于使用图1的虚拟WebRTC代理52和虚拟非WebRTC代理54从WebRTC客户端32到非WebRTC客户端34的外向交互请求的示范性通信流程,提供了图3。在图3中,图1的WebRTC客户端32、虚拟WebRTC代理52、虚拟WebRTC网关16、虚拟非WebRTC代理54以及非WebRTC客户端34的每一个都使用垂直虚线表示。可以理解的是对于本例,WebRTC客户端32已经从交互流服务器12下载了 WebRTC使能的web应用,例如HTML5/JavaScriptWebRTC应用。在一些实施方式中,非WebRTC客户端34可以是SIP用户代理客户端、H.323客户端,或Jingle客户端,作为非限制性示例。
[0038]如图3所示,经由虚拟WebRTC代理52和虚拟非WebRTC代理54的交互会话的建立以WebRTC客户端32向虚拟WebRTC网关16发送外向交互请求开始,由箭头108表示。一些实施方式可以实现为该外向交互请求包括由WebRTC客户端32从虚拟WebRTC网关16支持的多个非WebRTC协议中选择的非WebRTC协议。在一些实施方式中,该外向交互请求可以包括非WebRTC客户端34的SIP统一资源标识符(URI)或SIP地址。响应于接收到该外向交互请求,虚拟WebRTC网关16实例化对应于WebRTC客户端32的虚拟WebRTC代理52,如箭头110所示。基于WebRTC要约/应答交换、在虚拟WebRTC网关16和WebRTC客户端32之间的查询/响应交换、或HTTP头部数据、或由WebRTC客户端32提供的其他数据,虚拟WebRTC代理52可被实例化为具有已知与WebRTC客户端32兼容的客户端类型和/或客户端版本。
[0039]继续参考图3,WebRTC客户端32和虚拟WebRTC代理52随后开始“打孔”(holepunching)以确定建立直接通信的最佳方式,如双向箭头112所示。打孔是一种技术,其常使用诸如交互连接性建立(ICE)的协议,其中WebRTC客户端32和/或虚拟WebRTC代理52建立与揭示要用于直接通信中的外部和内部地址信息的未受限第三方服务器(未示出)的连接。如果由箭头112指示的ICE打孔成功,WebRTC客户端32和虚拟WebRTC代理52开始秘钥协商以建立安全对等连接,如双向箭头114所示。如果秘钥协商成功完成,对等连接建立在WebRTC客户端32和虚拟WebRTC代理52之间,如双向箭头116所示。
[0040]紧随在WebRTC客户端32和虚拟WebRTC代理52之间建立对等连接,虚拟WebRTC网关16随后实例化对应于非WebRTC客户端34的虚拟非WebRTC代理54,如箭头118所示。一些实施方式可以实现为虚拟非WebRTC代理54是对应于由外向交互请求指示的所选非WebRTC协议而实例化的。一旦被实例化,虚拟非WebRTC代理54向非WebRTC客户端34发送INVITE请求,如箭头120所示。在一些实施方式中,INVITE请求是用于请求发起交互会话的协议特定消息。例如,用于SIP客户端的INVITE请求可以是发送到由WebRTC客户端32在外向交互请求中初始指定的SIP URI或SIP地址的SIP INVITE请求。如果非WebRTC客户端34同意该外向交互请求,非WebRTC客户端34以OK消息作为对虚拟非WebRTC代理54的响应,如箭头122所示。在非WebRTC客户端34是SIP客户端的实施方式中,OK消息可以是SIP “2000K”响应消息。
[0041]WebRTC客户端32和非WebRTC客户端34随后开始交换媒体和/或数据流。如图3所示,WebRTC交互流18的内容从WebRTC客户端32传递到虚拟WebRTC代理52,如双向箭头124所示。类似地,非WebRTC交互流22的内容从非WebRTC客户端34传递到虚拟非WebRTC代理54,如双向箭头126所示。虚拟WebRTC代理52和虚拟非WebRTC代理54随后通过虚拟WebRTC网关16发送WebRTC交互流18和非WebRTC交互流22的内容,如双向箭头128和130所示。以这种方式,虚拟WebRTC网关16可以选择性地控制、监控和/或修改在WebRTC客户端32和非WebRTC客户端34之间的WebRTC交互流18和/或非WebRTC交互流22的内容。
[0042]作为对图3中所示的外向交互请求的补充,图4示出了用于使用图1的虚拟WebRTC代理52和虚拟非WebRTC代理54从非WebRTC客户端34到WebRTC客户端32的内向交互请求的示范性通信流程。在图4中,图1的WebRTC客户端32、虚拟WebRTC代理52、虚拟WebRTC网关16、虚拟非WebRTC代理54以及非WebRTC客户端34的每一个都使用垂直虚线表示。可以理解的是对于本例,WebRTC客户端32已经从交互流服务器12下载了 WebRTC使能的web应用,例如HTML5/JavaScript WebRTC应用。在一些实施方式中,非WebRTC客户端34可以是SIP用户代理客户端、H.323客户端,或Jingle客户端,作为非限制性示例。
[0043]在一些实施方式中,从非WebRTC客户端34接收到对WebRTC客户端32的内向交互请求要求虚拟非WebRTC代理54在WebRTC客户端32激活时被实例化。相应地,在图4中,虚拟WebRTC网关16接收WebRTC客户端32激活的指示,如箭头132所示。随着确定WebRTC客户端32是激活的,虚拟WebRTC网关16实例化虚拟非WebRTC代理54,如箭头134所示。一旦被实例化,虚拟非WebRTC代理54等待对于交互的进入请求。
[0044]为了发起与WebRTC客户端32的交互会话,非WebRTC客户端34发送INVITE请求到虚拟非WebRTC代理54,如箭头136所示。在一些实施方式中,INVITE请求是用于请求发起交互会话的协议特定消息。例如,如果非WebRTC客户端34是SIP用户代理客户端,INVITE消息可以是发送到分配给WebRTC客户端32并且在虚拟非WebRTC代理54上注册的SIP URI 或 SIP 地址的 SIP INVITE 请求。
[0045]响应于接收到该内向交互请求,虚拟WebRTC网关16实例化对应于WebRTC客户端32的虚拟WebRTC代理52,如箭头138所示。基于WebRTC要约/应答交换、在虚拟WebRTC网关16和WebRTC客户端32之间的查询/响应交换、或HTTP头部数据、或由WebRTC客户端32提供的其他数据,虚拟WebRTC代理52可被实例化为具有已知与WebRTC客户端32兼容的客户端类型和/或客户端版本。WebRTC客户端32和虚拟WebRTC代理52随后开始打孔,以确定建立直接通信的最佳方式,如双向箭头140所示。如果由箭头140指示的ICE打孔成功,WebRTC客户端32和虚拟WebRTC代理52开始秘钥协商以建立安全对等连接,如双向箭头142所示。一旦秘钥协商成功完成,对等连接建立在WebRTC客户端32和虚拟WebRTC代理52之间,如双向箭头144所示。
[0046]紧随在WebRTC客户端32和虚拟WebRTC代理52之间建立对等连接,虚拟非WebRTC代理54以OK消息作为对非WebRTC客户端34的响应,如箭头146所示。在非WebRTC客户端34是SIP客户端的实施方式中,OK消息可以是SIP “200 0K”响应消息。WebRTC客户端32和非WebRTC客户端34随后开始交换媒体和/或数据流。如图4所示,WebRTC交互流18的内容从WebRTC客户端32传递到虚拟WebRTC代理52,如双向箭头148所示。类似地,非WebRTC交互流22的内容从非WebRTC客户端34传递到虚拟非WebRTC代理54,如双向箭头150所示。虚拟WebRTC代理52和虚拟非WebRTC代理54随后通过虚拟WebRTC网关16发送WebRTC交互流18和非WebRTC交互流22的内容,如双向箭头152和154所示。以这种方式,虚拟WebRTC网关16可以选择性地控制、监控和/或修改在WebRTC客户端32和非WebRTC客户端34之间的WebRTC交互流18和/或非WebRTC交互流22的内容。
[0047]图5A和5B被提供用于更详细地解释图1的虚拟WebRTC网关16在WebRTC客户端32和非WebRTC客户端34之间提供互操作性的示范性整体过程。为了解释的目的,图5A和5B参考图1的示范性交互通信系统10的元件。图5A详细说明了用于响应于内向交互请求和/或外向交互请求建立交互会话的操作。图5B示出用于提供包括从WebRTC交互流18和/或非WebRTC交互流22提取内容、向其中注入内容、记录和/或转换其内容的附加功能的操作。
[0048]在图5A中,处理以虚拟WebRTC网关16可选地确定WebRTC客户端32是否是激活的开始(方框156)。如以上关于图4所述的,从非WebRTC客户端34接收到对WebRTC客户端32的内向交互请求可能要求虚拟非WebRTC代理54在WebRTC客户端32激活时被实例化。相应地,如果WebRTC客户端32被确定是激活的,虚拟WebRTC网关16可以实例化对应于非WebRTC客户端34的虚拟非WebRTC代理54 (方框158)。处理随后在方框160处恢复。然而,如果WebRTC客户端32在方框156被确定为未激活,处理返回至方框156。可以理解的是,虚拟WebRTC网关16的一些实施方式可被配置为仅处理来自WebRTC客户端32去往非WebRTC客户端34的外向交互请求。对于这样的实施方式,方框156和158的功能可以被省略。
[0049]虚拟WebRTC网关16随后确定是否接收到对外向或内向交互的请求(方框160)。在一些实施方式中,外向交互请求可以包括用于非WebRTC客户端34的SIP URI或SIP地址。一些实施方式可以实现为内向交互请求包括分配给WebRTC客户端32的SIP URI或SIP地址。如果虚拟WebRTC网关16没有接收到外向或内向交互请求,处理返回方框160。
[0050]如果虚拟WebRTC网关16在方框160确定从WebRTC客户端32接收到外向交互请求,虚拟WebRTC网关16实例化对应于非WebRTC客户端34的虚拟非WebRTC代理54 (方框162)。处理随后在方框164处恢复。如果虚拟WebRTC网关16在方框160处确定接收到内向交互请求,处理直接前进到方框164。
[0051]基于WebRTC要约/应答交换、在虚拟WebRTC网关16和WebRTC客户端32之间的查询/响应交换、或HTTP头部数据、或由WebRTC客户端32提供的其他数据,虚拟WebRTC网关16可以可选地确定WebRTC客户端32的客户端类型和/或客户端版本(方框164)。这可以使得虚拟WebRTC网关16能够实例化具有对应于WebRTC客户端32的客户端类型和/或版本的客户端类型和/或版本的虚拟WebRTC代理52。因为WebRTC客户端32直接与同一类型和版本的虚拟WebRTC代理52通信,由WebRTC客户端32对WebRTC的不同水平的支持导致的不兼容性得以解决。
[0052]虚拟WebRTC网关16随后实例化对应于WebRTC客户端32的虚拟WebRTC代理52(方框166)。在一些实施方式中,虚拟WebRTC网关16可以通过在计算设备14上发起WebRTC客户端,的实例,例如Web浏览器,而实例化虚拟WebRTC代理52。一些实施方式可以实现为虚拟WebRTC代理52被执行于操作系统的虚拟实例之中。
[0053]虚拟WebRTC网关16随后在虚拟WebRTC代理52和WebRTC客户端32之间建立WebRTC交互流18(方框168)。虚拟WebRTC网关16还在虚拟非WebRTC代理54和非WebRTC客户端34之间建立非WebRTC交互流22 (方框170)。虚拟WebRTC网关16接下来经由该虚拟WebRTC代理52和虚拟非WebRTC代理54,将WebRTC交互流18的内容引导到非WebRTC交互流22,以及将非WebRTC交互流22的内容引导到WebRTC交互流18(方框172)。这在虚拟WebRTC代理52和虚拟非WebRTC代理54之间实现了 “背靠背”连接。在一些实施方式中,这可以通过使用由虚拟WebRTC网关16提供的虚拟音频接收器62、74以及发送器64、76,虚拟视频接收器66、78以及发送器68、80,以及虚拟数据接收器70、82以及发送器72、84来完成,如图1所示。处理随后在图5B的方框174处恢复。
[0054]现在参考图5B,虚拟WebRTC网关16此时可以访问WebRTC交互流18和非WebRTC交互流22的内容,并且可以提供附加的媒体处理和处置功能。例如,在一些实施方式中,虚拟WebRTC网关16可以从WebRTC交互流18、非WebRTC交互流22、或它们的组合提取内容(方框174)。一些实施方式可以实现为虚拟WebRTC网关16可以向WebRTC交互流18、非WebRTC交互流22、或它们的组合注入内容(方框176)。例如,虚拟WebRTC网关16可以向WebRTC交互流18和/或非WebRTC交互流22中插入附加的音频、视频和/或数据。根据一些实施方式,虚拟WebRTC网关16可以记录WebRTC交互流18的内容、非WebRTC交互流22的内容、或它们的组合(方框178)。在一些实施方式中,虚拟WebRTC网关16可以转换WebRTC交互流18的内容、非WebRTC交互流22的内容、或它们的组合(方框180)。
[0055]虚拟WebRTC网关16随后确定WebRTC交互流18或非WebRTC交互流22的任一个是否已经终止(方框182)。如果WebRTC交互流18和非WebRTC交互流22都仍然激活,处理返回至图5B的方框174。否则,虚拟WebRTC网关16在合适时终止剩余的激活WebRTC交互流18或非WebRTC交互流22 (方框184)。
[0056]图6以适合于执行指令以实现在此描述的功能的示范性计算机系统188的示范性形式提供处理系统186的示意图表示。在一些实施方式中,处理系统186可以执行指令以实现图1的WebRTC应用提供者56和虚拟WebRTC网关16的功能。在这一点上,处理系统186可以包括计算机系统188,其中用于使得处理系统186运行在此描述的方法中的任意一个或多个的一组指令被执行。处理系统186可以连接到(作为非限制性例子,组网连接)局域网(LAN)、内部网、外部网或互联网中的其他机器。处理系统186可以工作于客户端-服务器网络环境下,或作为端对端(或分布式)网络环境中的端设备。尽管只示出了单个处理系统186,术语“控制器”和“服务器”应当也被认为包括单独地或联合地执行一组(或多组)指令以实现在此描述的方法的任意一个或多个的设备的任意集合。处理系统186可以是服务器、个人计算机、桌面计算机、膝上型计算机、个人数字助理(PIA)、计算平板电脑、移动设备、或者任意其他设备,并且可以表现为服务器或用户的计算机,作为非限制性例子。
[0057]示范性计算机系统188包括处理设备或处理器190,主存储器192 (作为非限制性例子,只读存储器(ROM)、闪存、诸如同步DRAM (SDRAM)的动态随机访问存储器(DRAM)等等),以及静态存储器194(作为非限制性例子,闪存、静态随机访问存储器(SRAM)等等),它们可以经由总线196互相通信。可替代地,处理设备190可以直接地或经由一些其他连接方式连接到主存储器192和/或静态存储器194。
[0058]处理设备190代表一个或多个处理设备,例如微处理器、中央处理单元(CPU)或者类似物。更特别地,处理设备190可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、执行其他指令集的处理器、或者执行指令集的组合的处理器。处理设备190被配置为执行用于实现在此描述的操作和步骤的指令198和/或缓存的指令200中的处理逻辑。
[0059]计算机系统188可以进一步包括形式为网络接口设备202的通信接口。它还可以包括或者不包括输入204以接收当执行指令198、200时要通信到计算机系统188的输入和选择。它还可以包括或不包括输出206,包括但不限定为显示器208。显示器208可以是视频显示单元(作为非限制性例子,液晶显示器(LCD)或阴极射线管(CRT))、文字数字输入设备(作为非限制性例子,键盘)、指针控制设备(作为非限制性例子,鼠标)、和/或触摸屏设备(作为非限制性例子,平板输入设备或屏幕)。
[0060]计算机系统188可以包括或不包括数据存储设备210,其包括使用驱动器212在计算机可读介质214中存储在此描述的功能,计算机可读介质214上存储了实施在此描述的方法或功能的任意一个或多个的一个或多个指令集216 (例如软件)。功能可以包括处理系统186、参与的用户设备、和/或许可服务器的方法和/或其他功能,作为非限制性例子。当被计算机系统188执行期间,一个或多个指令集216也可以完全地或至少部分地驻存在主存储器192和/或处理设备190中。主存储器192和处理设备190还组成机器可访问存储媒体。指令198、200和/或216可以进一步在网络218上经由网络接口设备202发送或接收。网络218可以是内部网络或者互联网络。
[0061]尽管计算机可读介质214在示范性实施方式中被示为单个媒体,术语“机器可访问存储媒体”应当被认为包括存储一个或多个指令集216的单个媒体或多个媒体(作为非限制性例子,集中或分布式数据库、和/或关联的缓存和服务器)。术语“机器可访问存储媒体”还应当被认为包括能够存储、编码或携带用于由机器执行的指令集198、200和/或216的、以及使得机器运行在此公开的方法的任意一个或多个的任意媒体。术语“机器可访问存储媒体”相应地应当认为包括但不限于固态存储器、光或磁媒体、以及载波信号。
[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交互流的内容引导到所述WebRTC交互流。
2.如权利要求1所述的方法,其中所述非WebRTC交互流包括会话发起协议(SIP)交互流、H.323交互流、Jingle交互流、或者以会话为中心的交互流。
3.如权利要求1所述的方法,包括响应于接收到来自WebRTC客户端的请求与非WebRTC客户端交互的外向请求而实例化所述虚拟WebRTC代理并且实例化所述虚拟非WebRTC 代理。
4.如权利要求3所述的方法,其中所述外向请求包括由WebRTC客户端从所述虚拟WebRTC网关支持的多个非WebRTC协议中选择的非WebRTC协议;以及 其中实例化虚拟非WebRTC代理包括实例化对应于所述非WebRTC协议的虚拟非WebRTC代理。
5.如权利要求1所述的方法,包括: 响应于确定WebRTC客户端是激活的而实例化所述虚拟非WebRTC代理;以及响应于由所述虚拟非WebRTC代理接收到来自所述非WebRTC客户端的与所述WebRTC客户端交互的内向请求而实例化所述虚拟WebRTC代理并建立所述WebRTC交互流。
6.如权利要求1所述的方法,进一步包括基于WebRTC要约/应答交换、在所述虚拟WebRTC网关和所述WebRTC客户端之间的查询/响应交换、或者超文本传输协议(HTTP)头部数据、或它们的组合,确定WebRTC客户端的客户端类型或客户端版本、或它们的组合。
7.如权利要求1所述的方法,进一步包括记录WebRTC交互流的内容或者非WebRTC交互流的内容,或者转换WebRTC交互流的内容或者非WebRTC交互流的内容,或者它们的组八口 ο
8.如权利要求1所述的方法,进一步包括从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交互流。
10.一种非暂时性计算可读介质,在其上存储有计算机可执行指令,所述指令使得处理器执行一种方法,其包括: 实例化对应于Web实时通信(WebRTC)客户端的虚拟WebRTC代理; 实例化对应于非WebRTC客户端的虚拟非WebRTC代理; 在虚拟WebRTC代理和WebRTC客户端之间建立WebRTC交互流; 在虚拟非WebRTC代理和非WebRTC客户端之间建立非WebRTC交互流;以及经由该虚拟WebRTC代理和虚拟非WebRTC代理将WebRTC交互流的内容引导到非WebRTC交互流,以及将非WebRTC交互流的内容引导到WebRTC交互流。
【文档编号】H04L12/66GK104253742SQ201410399712
【公开日】2014年12月31日 申请日期:2014年6月30日 优先权日:2013年6月30日
【发明者】A·B·约翰斯顿, J·H·约亚库姆 申请人:阿瓦亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1