背靠背虛擬web實時通信代理以及相關(guān)的方法、系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及背靠背虛擬WEB實時通信代理以及相關(guān)的方法、系統(tǒng)。此公開了背靠背web實時通信(WebRTC)虛擬代理,相關(guān)的方法、系統(tǒng)和計算機可讀媒體也被公開。在一個實施方式中,一種用于提供背靠背虛擬WebRTC代理的方法包括由執(zhí)行于計算設(shè)備上的WebRTC服務(wù)器接收第一和第二WebRTC客戶端之間的WebRTC要約/應(yīng)答交換。該方法進(jìn)一步包括實例化一個或多個虛擬WebRTC代理。該方法還包括在第一WebRTC客戶端和一個或多個虛擬WebRTC代理的一個之間建立第一WebRTC交互流,以及在第二WebRTC客戶端和一個或多個虛擬WebRTC代理的一個之間建立第二WebRTC交互流。該方法附加地包括經(jīng)由一個或多個虛擬WebRTC代理,將第一WebRTC交互流的內(nèi)容引導(dǎo)到第二WebRTC交互流,以及將第二WebRTC交互流的內(nèi)容引導(dǎo)到第一WebRTC交互流。
【專利說明】背靠背虛擬WEB實時通信代理以及相關(guān)的方法、系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本公開的技術(shù)一般地涉及web實時通信(WebRTC)交互會話。
【背景技術(shù)】
[0002]web實時通信(webTRC)代表一種當(dāng)前的努力,以開發(fā)用于將實時通信能力集成到web客戶端、例如web瀏覽器中以實現(xiàn)與其他web客戶端的直接交互的工業(yè)標(biāo)準(zhǔn)。這一實時通信功能可由web開發(fā)人員通過標(biāo)準(zhǔn)標(biāo)記標(biāo)簽和客戶端側(cè)腳本應(yīng)用編程接口(API)訪問,例如由超文本標(biāo)記語言版本5(HTML5)所提供的標(biāo)準(zhǔn)標(biāo)記標(biāo)簽,以及例如JavaScript API。有關(guān) WebRTC 的更多信息可以在由 Alan B.Johnson 以及 Daniel C.Burnett (2012 DigitalCodex LLC)所作的 “WebRTC:HTML5 實時 web 的 API 和 RTCffEB 協(xié)議” (WebTRC:APIs andRTCffEB Protocols of the HTML5 Real-time Web)中找到,其全部內(nèi)容通過引用結(jié)合于此。
[0003]WebRTC提供用于在點對點交互會話和多方交互會話中建立實時視頻、音頻和/或數(shù)據(jù)流的內(nèi)置能力。WebRTC標(biāo)準(zhǔn)當(dāng)前在World Wide Web Consortium (W3C)和InternetEngineering Task Force (IETF)的聯(lián)合開發(fā)之中。WebRTC標(biāo)準(zhǔn)的當(dāng)前狀態(tài)的信息可以在例如 http://www.w3c.0rg 和 http://www.1etf.0rg 找至lj。
[0004]為了建立WebRTC交互會話(例如實時視頻、音頻和/或數(shù)據(jù)交換),兩個web客戶端可以從WebRTC應(yīng)用服務(wù)器檢索WebRTC使能的web應(yīng)用,例如HTML5/JavaScriptweb應(yīng)用。通過web應(yīng)用,這兩個web客戶端進(jìn)行媒體協(xié)商以進(jìn)行通信并就定義WebRTC交互會話的特性的參數(shù)達(dá)成一致。該媒體協(xié)商被稱為WebRTC “要約/應(yīng)答”交換。在要約/應(yīng)答交換中,工作在發(fā)送方計算設(shè)備上的第一 web客戶端發(fā)送“要約”到在接收方計算設(shè)備上的第二 web客戶端。該要約包括指定第一 web客戶端支持并希望用于WebRTC交互會話中的媒體類型和能力的WebRTC會話描述對象。隨后第二 web客戶端以指示提出的媒體類型和能力的哪一個是其支持并接受用于WebRTC交互會話的WebRTC會話描述對象“應(yīng)答”作為響應(yīng)。一旦WebRTC要約/應(yīng)答交換完成,web客戶端隨后可以相互建立直接對等連接,并可以開始媒體或數(shù)據(jù)的實時交換。web客戶端之間的對等連接典型地使用安全實時傳輸協(xié)議(SRTP)來傳輸實時媒體流,并且可以利用用于實時數(shù)據(jù)交換的各種其他協(xié)議。
[0005]然而,端對端或者說對等(peer to peer)體系對于某些環(huán)境下的實時交互可能不是最優(yōu)的。例如,可能有必要提供對WebRTC交互流的記錄或監(jiān)控,和/或解決在WebRTC交互流的端點處的web客戶端之間的已知的不兼容性。在直接對等連接是不可能的情況下,WebRTC標(biāo)準(zhǔn)允許WebRTC交互流通過TURN(使用中繼穿越NAT)服務(wù)器進(jìn)行路由。然而,通過TURN服務(wù)器傳遞的WebRTC交互流是被加密的,因此不能在TURN服務(wù)器進(jìn)行檢查或監(jiān)控。此外,將WebRTC交互流實時轉(zhuǎn)換為更容易操作的格式會需要網(wǎng)關(guān),這可能過度復(fù)雜和/或在商業(yè)上不可行。
【發(fā)明內(nèi)容】
[0006]在此詳細(xì)說明書中公開的實施方式提供了背靠背虛擬web實時通信(WebRTC)代理。相關(guān)的方法、系統(tǒng)和計算機可讀媒體也被公開。在一些實施方式中,兩個或更多WebRTC客戶端通過WebRTC服務(wù)器尋求建立WebRTC交互會話,該WebRTC服務(wù)器實例化一個或多個虛擬WebRTC代理。WebRTC服務(wù)器可以使得兩個或更多WebRTC客戶端的每一個建立與一個或更多虛擬WebRTC代理的WebRTC交互流。WebRTC服務(wù)器隨后通過引導(dǎo)在一個或多個虛擬WebRTC代理之間建立的WebRTC交互流的內(nèi)容而“背靠背(back-to-back) ”連接虛擬WebRTC代理。通過這種方式,WebRTC服務(wù)器可以為兩個或更多WebRTC客戶端提供WebRTC交互會話,同時還提供附加的媒體處理功能。作為非限制性例子,媒體處理功能可以包括對WebRTC交互流的記錄和/或監(jiān)控,從WebRTC交互流提取內(nèi)容或者向其中注入內(nèi)容,和/或解決WebRTC客戶端之間潛在的或?qū)嶋H的不兼容性。
[0007]在這點上,在一個實施方式中,提供了一種用于提供背靠背虛擬WebRTC代理的方法。該方法包括由執(zhí)行于計算設(shè)備上的WebRTC服務(wù)器接收第一 WebRTC客戶端和第二WebRTC客戶端之間的WebRTC要約/應(yīng)答交換。該方法進(jìn)一步包括實例化一個或多個虛擬WebRTC代理。該方法還包括在第一 WebRTC客戶端和一個或多個虛擬WebRTC代理中的一個之間建立第一 WebRTC交互流,以及在第二 WebRTC客戶端和一個或多個虛擬WebRTC代理中的一個之間建立第二 WebRTC交互流。該方法附加地包括經(jīng)由一個或多個虛擬WebRTC代理,將第一 WebRTC交互流的內(nèi)容引導(dǎo)到第二 WebRTC交互流,以及將第二 WebRTC交互流的內(nèi)容引導(dǎo)到第一 WebRTC交互流。
[0008]在另一個實施方式中,提供了一種用于提供背靠背虛擬WebRTC代理的系統(tǒng)。該系統(tǒng)包括至少一個通信接口,以及與該至少一個通信接口相關(guān)聯(lián)的WebRTC服務(wù)器。該WebRTC服務(wù)器包括被配置為接收第一 WebRTC客戶端和第二 WebRTC客戶端之間的WebRTC要約/應(yīng)答交換的WebRTC應(yīng)用提供器。該WebRTC服務(wù)器進(jìn)一步包括虛擬WebRTC代理管理器。該虛擬WebRTC代理管理器被配置為實例化一個或多個虛擬WebRTC代理。該虛擬WebRTC代理管理器進(jìn)一步被配置為在第一 WebRTC客戶端和一個或多個虛擬WebRTC代理的一個之間建立第一 WebRTC交互流,以及在第二 WebRTC客戶端和一個或多個虛擬WebRTC代理的一個之間建立第二 WebRTC交互流。該虛擬WebRTC代理管理器還被配置為經(jīng)由一個或多個虛擬WebRTC代理,將第一 WebRTC交互流的內(nèi)容引導(dǎo)到第二 WebRTC交互流,以及將第二 WebRTC交互流的內(nèi)容引導(dǎo)到第一 WebRTC交互流。
[0009]在另一個實施方式中,提供了非暫時性計算機可讀介質(zhì)。該非暫時性計算可讀介質(zhì)上存儲有計算機可執(zhí)行指令以使得處理器實現(xiàn)一種方法,該方法包括接收第一 WebRTC客戶端和第二 WebRTC客戶端之間的WebRTC要約/應(yīng)答交換。由計算機可執(zhí)行指令實施的該方法進(jìn)一步包括實例化一個或多個虛擬WebRTC代理。由計算機可執(zhí)行指令實施的該方法還包括在第一 WebRTC客戶端和一個或多個虛擬WebRTC代理的一個之間建立第一WebRTC交互流,以及在第二 WebRTC客戶端和一個或多個虛擬WebRTC代理的一個之間建立第二 WebRTC交互流。由計算機可執(zhí)行指令實施的該方法附加地包括經(jīng)由一個或多個虛擬WebRTC代理,將第一 WebRTC交互流的內(nèi)容引導(dǎo)到第二 WebRTC交互流,以及將第二 WebRTC交互流的內(nèi)容引導(dǎo)到第一 WebRTC交互流。
【專利附圖】
【附圖說明】
[0010]被結(jié)合于此并形成本說明書的一部分的隨附的附圖示出本公開的多個方面,與說明書一起用于解釋本公開的原理。
[0011]圖1是示出在兩個WebRTC客戶端之間經(jīng)由包括虛擬WebRTC代理管理器和兩個背靠背虛擬WebRTC代理的WebRTC服務(wù)器的web實時通信(WebRTC)交互會話的概念圖;
[0012]圖2是示出圖1中用于提供背靠背虛擬WebRTC代理的WebRTC服務(wù)器和虛擬WebRTC代理管理器的示范性操作的流程圖;
[0013]圖3是示出在包括圖1的虛擬WebRTC代理管理器和背靠背虛擬WebRTC代理的示范性系統(tǒng)中的示范性通信流的圖;
[0014]圖4是示出在利用由虛擬WebRTC代理管理器管理的單個虛擬WebRTC代理的兩個WebRTC客戶端之間的WebRTC交互會話的概念圖;
[0015]圖5A-5C是示出用于提供背靠背虛擬WebRTC代理和附加媒體處理功能的更詳細(xì)示范性操作的流程圖;
[0016]圖6是可以包括圖1的WebRTC服務(wù)器和虛擬WebRTC代理管理器的示范性基于處理器的系統(tǒng)的方框圖。
【具體實施方式】
[0017]現(xiàn)在參考附圖,描述了本公開的幾個示范性實施方式。措辭“示范性”用在此處的意思是“作為示例、例子或說明”。在此被描述為“示范性”的實施方式并不一定被解釋為相比其他實施方式是優(yōu)選的或有利的。
[0018]在此詳細(xì)說明書中公開的實施方式提供了背靠背虛擬web實時通信(WebRTC)代理。相關(guān)的方法、系統(tǒng)和計算機可讀媒體也被公開。在一些實施方式中,兩個或更多WebRTC客戶端通過WebRTC服務(wù)器尋求建立WebRTC交互會話,該WebRTC服務(wù)器實例化一個或多個虛擬WebRTC代理。WebRTC服務(wù)器可以使得兩個或更多WebRTC客戶端的每一個建立與一個或更多虛擬WebRTC代理的WebRTC交互流。WebRTC服務(wù)器隨后通過引導(dǎo)在一個或多個虛擬WebRTC代理之間建立的WebRTC交互流的內(nèi)容而“背靠背(back-to-back) ”連接虛擬WebRTC代理。通過這種方式,WebRTC服務(wù)器可以為兩個或更多WebRTC客戶端提供WebRTC交互會話,同時還提供附加的媒體處理功能。作為非限制性例子,媒體處理功能可以包括對WebRTC交互流的記錄和/或監(jiān)控,從WebRTC交互流提取內(nèi)容或者向其中注入內(nèi)容,和/或解決WebRTC客戶端之間潛在的或?qū)嶋H的不兼容性。
[0019]在這點上,在一個實施方式中,提供了一種用于提供背靠背虛擬WebRTC代理的方法。該方法包括由執(zhí)行于計算設(shè)備上的WebRTC服務(wù)器接收第一 WebRTC客戶端和第二WebRTC客戶端之間的WebRTC要約/應(yīng)答交換。該方法進(jìn)一步包括實例化一個或多個虛擬WebRTC代理。該方法還包括在第一 WebRTC客戶端和一個或多個虛擬WebRTC代理的一個之間建立第一 WebRTC交互流,以及在第二 WebRTC客戶端和一個或多個虛擬WebRTC代理的一個之間建立第二 WebRTC交互流。該方法附加地包括經(jīng)由一個或多個虛擬WebRTC代理,將第一 WebRTC交互流的內(nèi)容弓丨導(dǎo)到第二 WebRTC交互流,以及將第二 WebRTC交互流的內(nèi)容弓I導(dǎo)到第一 WebRTC交互流。
[0020]圖1示出提供在此公開的背靠背虛擬WebRTC代理的示范性交互通信系統(tǒng)10。特別地,該示范性交互通信系統(tǒng)10提供執(zhí)行在計算設(shè)備14上的WebRTC服務(wù)器12,其包括虛擬WebRTC代理管理器16。虛擬WebRTC代理管理器16處理虛擬WebRTC代理的實例化,并且協(xié)調(diào)虛擬WebRTC代理之間的WebRTC交互流內(nèi)容的建立和引導(dǎo)以在兩個或更多端點之間提供WebRTC交互會話。在此使用的“虛擬WebRTC代理”指的是瀏覽器的實例或者在虛擬WebRTC代理管理器16的控制下執(zhí)行于計算設(shè)備14上的其他WebRTC使能的客戶端應(yīng)用。“WebRTC交互會話”指用于在兩個或更多端點之間執(zhí)行WebRTC要約/應(yīng)答交換、建立對等連接、以及開始WebRTC交互流的操作。“WebRTC交互流”,如在此公開的,指根據(jù)WebRTC標(biāo)準(zhǔn)和協(xié)議在兩個或更多端點之間傳遞的交互媒體流和/或交互數(shù)據(jù)流。作為非限制性示例,組成WebRTC交互流的交互媒體流可以包括實時音頻流和/或?qū)崟r視頻流,或者其他實時媒體或數(shù)據(jù)流。包括WebRTC交互流的數(shù)據(jù)和/或媒體可以被在此統(tǒng)稱為“內(nèi)容”。
[0021 ] 為了解釋的目的,在圖1中,WebRTC交互流18被示為在計算設(shè)備14和計算設(shè)備20之間傳遞,WebRTC交互流22被示為在計算設(shè)備14和計算設(shè)備24之間傳遞。可以理解的是計算設(shè)備14、20和24可以都處于同一公共或私有網(wǎng)絡(luò)中,或者可以位于分開的、可通信地耦合的公共或私有網(wǎng)絡(luò)中。圖1的交互通信系統(tǒng)10的一些實施方式可以實現(xiàn)為每個計算設(shè)備14、20和24可以是具有網(wǎng)絡(luò)通信能力的任意計算設(shè)備,例如智能電話、平板電腦、專用web電器、媒體服務(wù)器、桌面或服務(wù)器計算機、或者特定功能的通信設(shè)備,作為非限制性的示例。計算設(shè)備14、20、24分別包括通信接口 26、28和30,用于將計算設(shè)備14、20和24連接至一個或多個公共和/或私有網(wǎng)絡(luò)。在一些實施方式中,計算設(shè)備14、20和24的元件可以分布在多于一個的計算設(shè)備14、20、24上。
[0022]圖1的計算設(shè)備20和24分別包括WebRTC客戶端32和34。WebRTC客戶端32和34的每一個可以是WebRTC使能的web瀏覽器應(yīng)用、專用通信應(yīng)用、移動應(yīng)用、或者無接口(interface-less)應(yīng)用,例如守護(hù)(daemon)或服務(wù)應(yīng)用,作為非限制性示例。WebRTC客戶端32和34實現(xiàn)對于在計算設(shè)備20和24分別與計算設(shè)備14之間提供實時WebRTC交互會話必要的協(xié)議、編解碼器和應(yīng)用編程接口(API)。
[0023]如圖1所示,計算設(shè)備20可通信地耦合到用于接收音頻輸入的音頻輸入設(shè)備36 (例如麥克風(fēng)),以及用于產(chǎn)生音頻輸出的音頻輸出設(shè)備38 (例如,揚聲器或耳機)。計算設(shè)備20進(jìn)一步可通信地耦合到用于接收視頻輸入的視頻輸入設(shè)備40 (例如相機、網(wǎng)絡(luò)相機或其他視頻源),以及用于顯示視頻輸出的視頻輸出設(shè)備42 (例如顯示器)。類似地,計算設(shè)備24可通信地耦合到音頻輸入設(shè)備44、音頻輸出設(shè)備46、視頻輸入設(shè)備48、以及視頻輸出設(shè)備50。音頻輸入設(shè)備36和44、音頻輸出設(shè)備38和46、視頻輸入設(shè)備40和48、和/或視頻輸出設(shè)備42和50可以集成到各個計算設(shè)備20和24中,和/或它們可以是可通信地耦合到各個計算設(shè)備20和24的外圍設(shè)備和/或虛擬設(shè)備。在一些實施方式中,計算設(shè)備20和/或24可以可通信地耦合到比圖1所示的更多或更少的設(shè)備。
[0024]為了建立WebRTC交互會話,WebRTC客戶端32和WebRTC客戶端34經(jīng)由超文本傳輸協(xié)議(HTTP) /超文本安全傳輸協(xié)議(HTTPS)連接54和56從WebRTC服務(wù)器12的WebRTC應(yīng)用提供器52下載WebRTCweb應(yīng)用(未示出)。在一些實施方式中,WebRTCweb應(yīng)用可以包括使用HTML5提供豐富用戶接口、并且使用JavaScript處理用戶輸入并與WebRTC應(yīng)用提供器52通信的HTML5/JavaScriptweb應(yīng)用。WebRTC客戶端32和WebRTC客戶端34隨后通過經(jīng)由WebRTC應(yīng)用提供器52交換WebRTC會話描述對象(未示出)進(jìn)行WebRTC要約/應(yīng)答交換。交換的WebRTC會話描述對象用于確定所需WebRTC交互會話的媒體類型和能力。
[0025]在典型的端對端或?qū)Φ?peer to peer)體系中,在WebRTC要約/應(yīng)答交換完成后,WebRTC交互流會經(jīng)由對等連接直接建立在WebRTC客戶端32和WebRTC客戶端34之間。然而,如上所述,在某些環(huán)境下端對端體系可能并非最優(yōu)。例如,端對端體系可能使得對WebRTC交互流的記錄和監(jiān)控、和/或解決WebRTC客戶端32和WebRTC客戶端34之間的不兼容性變得困難或不可能。
[0026]在這點上,虛擬WebRTC代理58和60由虛擬WebRTC代理管理器16提供。在圖1的例子中,隨著WebRTC應(yīng)用提供器52從WebRTC客戶端32和34接收WebRTC要約/應(yīng)答交換,虛擬WebRTC代理管理器16實例化對應(yīng)于WebRTC客戶端32和34的虛擬WebRTC代理58和60。在一些實施方式中,虛擬WebRTC代理管理器16可以通過在計算設(shè)備14上發(fā)起一個或多個WebRTC客戶端,的實例,例如web瀏覽器,而實例化虛擬WebRTC代理58和60。一些實施方式可以實現(xiàn)虛擬WebRTC代理58和60被執(zhí)行于操作系統(tǒng)的虛擬實例之中。
[0027]在實例化之后,虛擬WebRTC代理58和60的每一個由虛擬WebRTC代理管理器16引導(dǎo)以從虛擬WebRTC應(yīng)用提供器62下載虛擬WebRTC應(yīng)用(未示出)。一些實施方式可以實現(xiàn)為虛擬WebRTC應(yīng)用提供器62可通信地耦合到虛擬WebRTC代理管理器16。在一些實施方式中,虛擬WebRTC應(yīng)用提供器62可以集成到虛擬WebRTC代理管理器16和/或WebRTC應(yīng)用提供器52或者組成虛擬WebRTC代理管理器16和/或WebRTC應(yīng)用提供器52的元件。虛擬WebRTC應(yīng)用包括用于與虛擬WebRTC代理58和60的WebRTC API接口的專用指令。虛擬WebRTC代理58和60可以經(jīng)由虛擬WebRTC應(yīng)用與WebRTC客戶端32和34分別通信,以及與虛擬WebRTC代理管理器16通信。
[0028]虛擬WebRTC代理管理器16使得虛擬WebRTC代理58和60建立與相應(yīng)WebRTC客戶端32和34的WebRTC交互流18和22。在這樣做時,虛擬WebRTC代理管理器16和/或虛擬WebRTC代理58和60可以修改在WebRTC客戶端32和34之間傳遞的數(shù)據(jù)以便于建立WebRTC交互流18和22。例如,與每個WebRTC交互流18和22的端點的位置和/或身份相關(guān)的數(shù)據(jù)可以被修改以允許虛擬WebRTC代理58和60用作為它們的對應(yīng)WebRTC客戶端32和34的代理服務(wù)器。
[0029]虛擬WebRTC代理管理器16隨后“背靠背”連接虛擬WebRTC代理58和60 (即由虛擬WebRTC代理58的WebRTC交互流18輸出的內(nèi)容被引導(dǎo)作為進(jìn)入虛擬WebRTC代理60的WebRTC交互流22的輸入,以及反之)。為了完成“背靠背”連接,虛擬WebRTC代理管理器16提供虛擬音頻接收器(Rx) 64、虛擬音頻發(fā)送器(Tx) 66、虛擬視頻接收器(Rx) 68、虛擬視頻發(fā)送器(Tx) 69、虛擬數(shù)據(jù)接收器(Rx)70以及虛擬數(shù)據(jù)發(fā)送器(Tx) 71,虛擬WebRTC代理58可通信地與它們耦合。類似地,虛擬WebRTC代理60可通信地耦合到由虛擬WebRTC代理管理器16提供的虛擬音頻接收器(Rx) 72、虛擬音頻發(fā)送器(Tx) 74、虛擬視頻接收器(Rx) 76、虛擬視頻發(fā)送器(Tx) 77、虛擬數(shù)據(jù)接收器(Rx) 78、以及虛擬數(shù)據(jù)發(fā)送器(Tx) 79。隨著WebRTC交互流18和22的開始,虛擬WebRTC代理58和60轉(zhuǎn)發(fā)接收自對應(yīng)WebRTC交互流18和22的音頻信號到虛擬音頻接收器64和72。虛擬WebRTC代理58和60還轉(zhuǎn)發(fā)接收自對應(yīng)WebRTC交互流18和22的視頻信號到虛擬視頻接收器68和76,并轉(zhuǎn)發(fā)接收自對應(yīng)的WebRTC交互流18和22的數(shù)據(jù)到數(shù)據(jù)接收器70和78。
[0030]可通信地耦合到虛擬WebRTC代理58的虛擬音頻接收器64被配置為引導(dǎo)接收自虛擬WebRTC代理58的音頻信號到可通信地耦合到虛擬WebRTC代理60的虛擬音頻發(fā)送器74??赏ㄐ诺伛詈系教摂MWebRTC代理58的虛擬視頻接收器68被配置為引導(dǎo)接收自虛擬WebRTC代理58的視頻信號到可通信地耦合到虛擬WebRTC代理60的虛擬視頻發(fā)送器77??赏ㄐ诺伛詈系教摂MWebRTC代理58的虛擬數(shù)據(jù)接收器70被配置為引導(dǎo)接收自虛擬WebRTC代理58的數(shù)據(jù)到可通信地耦合到虛擬WebRTC代理60的虛擬數(shù)據(jù)發(fā)送器79。以類似的方式,可通信地耦合到虛擬WebRTC代理60的虛擬音頻接收器72被配置為引導(dǎo)接收自虛擬WebRTC代理60的音頻信號到可通信地耦合到虛擬WebRTC代理58的虛擬音頻發(fā)送器66。可通信地耦合到虛擬WebRTC代理60的虛擬視頻接收器76被配置為引導(dǎo)接收自虛擬WebRTC代理58的視頻信號到可通信地耦合到虛擬WebRTC代理60的虛擬視頻發(fā)送器69??赏ㄐ诺伛詈系教摂MWebRTC代理60的虛擬數(shù)據(jù)接收器78被配置為引導(dǎo)接收自虛擬WebRTC代理60的數(shù)據(jù)到可通信地耦合到虛擬WebRTC代理60的虛擬數(shù)據(jù)發(fā)送器71。
[0031]從WebRTC客戶端32和34的角度而言,作為結(jié)果的包括WebRTC交互流18和22的WebRTC交互會話并沒有與通過直接對等連接傳輸?shù)腤ebRTC交互會話顯得不同。在作為結(jié)果的WebRTC交互會話期間,虛擬WebRTC代理管理器16可以通過訪問來自虛擬音頻接收器64和/或72、虛擬視頻接收器68和/或76、和/或虛擬數(shù)據(jù)接收器70和/或78的輸入從WebRTC交互流18和/或WebRTC交互流22提取內(nèi)容。虛擬WebRTC代理管理器16還可以通過修改來自虛擬音頻發(fā)送器66和/或74、虛擬視頻發(fā)送器70和/或78、和/或虛擬數(shù)據(jù)發(fā)送器71和/或79的輸出向WebRTC交互流18和/或WebRTC交互流22注入內(nèi)容。因而,一些實施方式可以實現(xiàn)為內(nèi)容可以被從WebRTC交互流18和/或WebRTC交互流22提取或者向WebRTC交互流18和/或WebRTC交互流22注入。在一些實施方式中,來自WebRTC交互流18和/或WebRTC交互流22的內(nèi)容可以被虛擬WebRTC代理管理器16記錄或轉(zhuǎn)換。
[0032]在一些實施方式中,來自WebRTC交互流18和/或WebRTC交互流22的內(nèi)容可以可選地被引導(dǎo)到或者接收自功能提供器80,如雙向視頻饋送82、雙向音頻饋送84和雙向數(shù)據(jù)饋送85所指示的。功能提供器80可以提供附加的媒體處理功能,例如記錄或轉(zhuǎn)換WebRTC交互流18和/或WebRTC交互流22的內(nèi)容。在一些實施方式中,媒體處理功能提供器80可以提供將要注入到WebRTC交互流18和/或WebRTC交互流22中的內(nèi)容,例如音頻或視頻通知。
[0033]在圖1的例子中,兩個虛擬WebRTC代理58和60由虛擬WebRTC代理管理器16實例化。這一設(shè)定在WebRTC客戶端32和WebRTC客戶端34已知是不兼容的或者具有有限的兼容性的情況下是有用的。作為非限制性例子,WebRTC客戶端32和34可以是具有對WebRTCAPI的不同級別的支持的web瀏覽器。為了修正這種不兼容性,WebRTC客戶端32和/或WebRTC客戶端34的特定客戶端類型和/或客戶端版本可以由WebRTC應(yīng)用提供器52和/或虛擬WebRTC代理管理器16確定。在一些實施方式中,WebRTC客戶端32和/或WebRTC客戶端34的客戶端類型和/或客戶端版本可以基于作為WebRTC要約/應(yīng)答交換的一部分而接收的數(shù)據(jù)、在虛擬WebRTC代理管理器16和WebRTC客戶端32和/或WebRTC客戶端34之間的查詢/響應(yīng)交換、HTTP頭部、或由WebRTC客戶端32和/或WebRTC客戶端34提供的其他數(shù)據(jù)來確定。虛擬WebRTC代理管理器16可以隨后實例化具有分別對應(yīng)于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代理可以節(jié)省計算設(shè)備14的計算資源并且增加WebRTC服務(wù)器12的縮放性。這一實施方式隨后參考附圖4將進(jìn)行詳細(xì)討論。
[0035]為了整體地描述圖1的WebRTC應(yīng)用提供器52和虛擬WebRTC代理管理器16的用于提供背靠背虛擬WebRTC代理的示范性操作,提供了圖2。為了清楚起見,在描述圖2時引用圖1的元件。在圖2的例子中,操作以WebRTC應(yīng)用提供器52接收第一 WebRTC客戶端32和第二 WebRTC客戶端34之間的WebRTC要約/應(yīng)答交換開始(方框86)。在一些實施方式中,WebRTC要約/應(yīng)答包括為所需的WebRTC交互會話交換可被用于確定第一 WebRTC客戶端32和第二 WebRTC客戶端34的媒體類型和能力的WebRTC會話描述對象。
[0036]虛擬WebRTC代理管理器16接下來實例化一個或多個虛擬WebRTC代理58和60 (方框88)。一些實施方式可以實現(xiàn)為如果確定第一 WebRTC客戶端32和第二 WebRTC客戶端34是兼容的則實例化單個虛擬WebRTC代理。在一些實施方式中,如果確定第一 WebRTC客戶端32和第二 WebRTC客戶端34不兼容,虛擬WebRTC代理可以為第一 WebRTC客戶端32和第二 WebRTC客戶端34的每一個而被建立。作為非限制性示例,虛擬WebRTC代理管理器16可以通過在計算設(shè)備14上發(fā)起WebRTC客戶端的一個或多個實例(如web瀏覽器)而實例化一個或多個虛擬WebRTC代理58和60。
[0037]虛擬WebRTC代理管理器16隨后在第一 WebRTC客戶端32和一個或多個虛擬WebRTC代理的一個(例如虛擬WebRTC代理58)之間建立第一 WebRTC交互流18,以及在第二 WebRTC客戶端34和一個或多個虛擬WebRTC代理的一個(例如虛擬WebRTC代理60)之間建立第二 WebRTC交互流22 (方框90)。根據(jù)在此的一些實施方式,虛擬WebRTC代理管理器16和/或虛擬WebRTC代理58和60可以修改在WebRTC客戶端32和34之間傳遞的數(shù)據(jù)以便于WebRTC交互流18和22的建立。例如,與WebRTC交互流18和22的每一個的端點的位置和/或身份相關(guān)的數(shù)據(jù)可以被修改以允許虛擬WebRTC代理58和60用作為它們的對應(yīng)WebRTC客戶端32和34的代理服務(wù)器。
[0038]虛擬WebRTC代理管理器16接下來經(jīng)由該一個或多個虛擬WebRTC代理58和60,將第一 WebRTC交互流18的內(nèi)容引導(dǎo)到第二 WebRTC交互流22,以及將第二 WebRTC交互流22的內(nèi)容引導(dǎo)到第一 WebRTC交互流18 (方框92)。這在一個或多個虛擬WebRTC代理58和60之間實現(xiàn)了“背靠背”連接。在一些實施方式中,這可以通過使用由虛擬WebRTC代理管理器16提供的虛擬音頻接收器和發(fā)送器、虛擬視頻接收器和發(fā)送器、以及虛擬數(shù)據(jù)接收器和發(fā)送器來完成,如圖1所示。
[0039]為了解釋在使用圖1的虛擬WebRTC代理58和60建立WebRTC交互會話期間的示范性通信流程,提供了圖3。在圖3中,圖1的WebRTC客戶端32、虛擬WebRTC代理58、WebRTC服務(wù)器12、虛擬WebRTC代理60、以及WebRTC客戶端34的每一個都使用垂直虛線表示??梢岳斫獾氖荳ebRTC服務(wù)器12包括WebRTC應(yīng)用提供器52和虛擬WebRTC代理管理器16,為了清楚起見它們被從本例中省略。進(jìn)一步可以理解的是,對于本例,WebRTC客戶端32和WebRTC客戶端34的每一個都已從WebRTC服務(wù)器12下載了 WebRTC使能的web應(yīng)用,例如 HTML5/JavaScript WebRTC 應(yīng)用。
[0040]如圖3所示,經(jīng)由虛擬WebRTC代理58和60的WebRTC交互會話的建立以WebRTC客戶端34向WebRTC服務(wù)器12發(fā)送會話描述對象(SDP)開始(在本例中,經(jīng)由HTTPS連接)。WebRTC會話描述對象被稱為SDP對象A并由箭頭94指示。SDP對象A表示W(wǎng)ebRTC要約/應(yīng)答交換中的“要約”,并指定WebRTC客戶端34支持并希望用于WebRTC交互會話中的媒體類型和能力。
[0041]WebRTC服務(wù)器12 (即虛擬WebRTC代理管理器16)實例化對應(yīng)于WebRTC客戶端34的虛擬WebRTC代理60,如箭頭96所指示的。在一些實施方式中,WebRTC客戶端34的客戶端類型和/或客戶端版本可以基于SDP對象A、WebRTC服務(wù)器12與WebRTC客戶端34之間的查詢/響應(yīng)交換、HTTP頭部、或由WebRTC客戶端34提供的其他數(shù)據(jù)確定。虛擬WebRTC代理60可以實例化為具有已知與WebRTC客戶端34兼容的客戶端類型和/或客戶端版本。WebRTC服務(wù)器12隨后轉(zhuǎn)發(fā)SDP對象A到WebRTC客戶端32,如箭頭98所示。
[0042]在WebRTC客戶端32從WebRTC服務(wù)器12接收SDP對象A之后,WebRTC客戶端32作為響應(yīng)經(jīng)由HTTPS發(fā)送被稱為SDP對象B的WebRTC會話描述對象到WebRTC服務(wù)器12,如箭頭100所示。在本例中SDP對象B表示W(wǎng)ebRTC要約/應(yīng)答交換中的“應(yīng)答”。WebRTC服務(wù)器12 (即虛擬WebRTC代理管理器16)隨后實例化對應(yīng)于WebRTC客戶端32的虛擬WebRTC代理58,如箭頭102所示。一些實施方式可以實現(xiàn)為WebRTC客戶端32的客戶端類型和/或客戶端版本可以基于SDP對象B、虛擬WebRTC代理管理器16與WebRTC客戶端32之間的查詢/響應(yīng)交換、HTTP頭部、或由WebRTC客戶端32提供的其他數(shù)據(jù)來確定。虛擬WebRTC代理58可以實例化為具有已知與WebRTC客戶端32兼容的客戶端類型和/或客戶端版本。WebRTC服務(wù)器12隨后轉(zhuǎn)發(fā)SDP對象B到WebRTC客戶端34,如箭頭104所示。
[0043]繼續(xù)參考圖3,WebRTC客戶端32和WebRTC客戶端34隨后開始“打孔”(hoIepunching)以確定分別建立與虛擬WebRTC代理58和60的直接通信的最佳方式。這由圖3中的雙向箭頭106和108指示。打孔是一種技術(shù),其常使用諸如交互連接性建立(ICE)的協(xié)議,其中WebRTC客戶端32和34都建立與揭示要用于直接通信中的外部和內(nèi)部地址信息的未受限第三方服務(wù)器(未示出)的連接。
[0044]一旦由箭頭106和108指示的ICE打孔成功,WebRTC客戶端32和34開始秘鑰協(xié)商以建立安全對等連接。在典型的端對端或?qū)Φ?peer to peer)體系中,秘鑰協(xié)商直接發(fā)生在WebRTC客戶端32和34之間。然而,在本例中,WebRTC客戶端32和34的每一個與其對應(yīng)的虛擬WebRTC代理58和60協(xié)商,如雙向箭頭110和111所示。如果秘鑰協(xié)商成功完成,對等連接建立在WebRTC客戶端32和虛擬WebRTC代理58之間,以及在WebRTC客戶端34和虛擬WebRTC代理60之間,如雙向箭頭112和113所示。
[0045]緊隨建立與它們的對應(yīng)虛擬WebRTC代理58和60的對等連接,WebRTC客戶端32和34開始交換WebRTC媒體和/或數(shù)據(jù)流。如圖3所示,WebRTC媒體和/或數(shù)據(jù)流從WebRTC客戶端32和34傳遞到它們各自的虛擬WebRTC代理58和60,如雙向箭頭114和116所示。虛擬WebRTC代理58和60隨后通過WebRTC服務(wù)器12發(fā)送WebRTC交互流18和22的內(nèi)容,如雙向箭頭118和120所示。以這種方式,WebRTC服務(wù)器12可以選擇性地控制、監(jiān)控、和/或修改在WebRTC客戶端32和34之間的WebRTC交互流18和/22的內(nèi)容。
[0046]如以上參考圖1所述,虛擬WebRTC代理管理器16可以在WebRTC客戶端32和34之間使用單個虛擬WebRTC代理實現(xiàn)WebRTC交互會話,如果WebRTC客戶端32和34已知是兼容的。為了解釋這個實施方式,提供了圖4。在圖4中,示出了圖1的示范性交互通信系統(tǒng)10。在本例中,然而,假設(shè)WebRTC客戶端32和34已知是兼容的。例如,WebRTC客戶端32和34可以是同一類型和版本的WebRTC使能的web瀏覽器。因而,在圖4的實施方式中,虛擬WebRTC代理管理器16實例化WebRTC客戶端32和34都可連接到的單個虛擬WebRTC代理122。虛擬WebRTC代理122從虛擬WebRTC應(yīng)用提供器62下載虛擬WebRTC應(yīng)用(未示出)。虛擬WebRTC應(yīng)用可以包括用于使得虛擬WebRTC代理122能夠與WebRTC客戶端32和34以及與虛擬WebRTC代理管理器16通信的專用指令。在一些實施方式中,虛擬WebRTC應(yīng)用可以使得虛擬WebRTC代理管理器16能夠控制虛擬WebRTC代理122如何引導(dǎo)音頻和/或視頻數(shù)據(jù)到WebRTC客戶端32和34。
[0047]在圖4的例子中,虛擬WebRTC代理管理器16使得虛擬WebRTC代理122建立與WebRTC客戶端32和34的WebRTC交互流18和22。虛擬WebRTC代理122隨后可以利用其內(nèi)置WebRTC API引導(dǎo)WebRTC交互流18的內(nèi)容到WebRTC交互流22,以及反之。虛擬WebRTC代理122還可以引導(dǎo)WebRTC交互流18和/或WebRTC交互流22的內(nèi)容到虛擬WebRTC代理管理器16。在作為結(jié)果的WebRTC交互會話期間,虛擬WebRTC代理管理器16可以通過訪問發(fā)送自虛擬WebRTC代理122的內(nèi)容,來從WebRTC交互流18和/或WebRTC交互流22中提取內(nèi)容。例如,來自WebRTC交互流18和/或WebRTC交互流22的內(nèi)容可以由虛擬WebRTC代理管理器16或者由功能提供器80記錄或轉(zhuǎn)換。虛擬WebRTC代理管理器16還可以引導(dǎo)虛擬WebRTC代理122向WebRTC交互流18和/或WebRTC交互流22中注入內(nèi)容。
[0048]圖5A-5C被提供用于更詳細(xì)地解釋圖1的WebRTC應(yīng)用提供器52和虛擬WebRTC代理管理器16提供背靠背虛擬WebRTC代理的示范性整體過程。為了解釋的目的,圖5A-5C參考圖1和4的示范性交互通信系統(tǒng)10的元件。圖5A詳細(xì)說明了用于確定尋求建立WebRTC交互會話的WebRTC客戶端32和34的兼容性、以及如果Web RTC客戶端32和34兼容則提供虛擬WebRTC代理122的操作。圖5B示出用于在WebRTC客戶端32和34不兼容的情況下、或者如果出于某些其他理由而需要多個虛擬客戶端時用于提供多個虛擬WebRTC代理58和60的操作。圖5C解釋了用于提供包括從WebRTC交互流18、22提取內(nèi)容、向其中注入內(nèi)容、記錄和/或轉(zhuǎn)換其內(nèi)容的附加功能的操作。
[0049]在圖5A中,處理以WebRTC應(yīng)用提供器52接收在第一 WebRTC客戶端32和第二WebRTC客戶端34之間的WebRTC要約/應(yīng)答交換開始(方框124)。基于WebRTC要約/應(yīng)答交換,虛擬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實現(xiàn)WebRTC交互會話,如以上結(jié)合圖4所述的。相應(yīng)地,虛擬WebRTC代理管理器16實例化與第一 WebRTC客戶端32和第二 WebRTC客戶端34都兼容的虛擬WebRTC代理122 (方框128)。作為非限制性例子,虛擬WebRTC代理管理器16可以執(zhí)行與第一 WebRTC客戶端32和/或第二 WebRTC客戶端34具有同一客戶端類型和/或版本的WebRTC客戶端。虛擬WebRTC代理管理器16隨后在第一 WebRTC客戶端32和虛擬WebRTC代理122之間建立第一 WebRTC交互流18 (方框130)。虛擬WebRTC代理管理器16還在第二 WebRTC客戶端34和虛擬WebRTC代理122之間建立第二 WebRTC交互流22 (方框132)。經(jīng)由虛擬WebRTC代理122,虛擬WebRTC代理管理器16將第一 WebRTC交互流18的內(nèi)容引導(dǎo)到第二 WebRTC交互流22,以及將第二 WebRTC交互流22的內(nèi)容弓丨導(dǎo)到第一 WebRTC交互流18 (方框134)。以這種方式,虛擬WebRTC代理122可以在WebRTC客戶端32和34之間實現(xiàn)WebRTC交互會話,同時最小化計算資源的使用。處理隨后在圖5C的方框136處恢復(fù)。
[0051]返回圖5A的確定方框126,如果虛擬WebRTC代理管理器16確定第一 WebRTC客戶端32和第二 WebRTC客戶端34并不完全兼容,虛擬WebRTC代理管理器16可以使用兩個虛擬WebRTC代理58和60在第一 WebRTC客戶端32和第二 WebRTC客戶端34之間實現(xiàn)WebRTC交互會話,如以上關(guān)于圖1所述的。相應(yīng)地,處理在圖5B的方框138處恢復(fù)。虛擬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進(jìn)行交互,不會產(chǎn)生關(guān)于WebRTC交互流18和22的兼容性問題。
[0053]經(jīng)由第一虛擬WebRTC代理58和第二虛擬WebRTC代理60,虛擬WebRTC代理管理器16將第一 WebRTC交互流18的內(nèi)容弓丨導(dǎo)到第二 WebRTC交互流22,以及將第二 WebRTC交互流22的內(nèi)容引導(dǎo)到第一 WebRTC交互流18(方框146)。以這種方式,虛擬WebRTC代理58和60被“背靠背”地連接,從而虛擬WebRTC代理58的音頻、視頻和/或數(shù)據(jù)輸出成為虛擬WebRTC代理60的輸入,以及反之。處理隨后在圖5C的方框136處恢復(fù)。
[0054]現(xiàn)在參考圖5C,虛擬WebRTC代理管理器16此時可以訪問第一 WebRTC交互流18和第二 WebRTC交互流22的內(nèi)容,并且可以提供附加的媒體處理功能。例如,在一些實施方式中,虛擬WebRTC代理管理器16可以從第一 WebRTC交互流18、第二 WebRTC交互流22、或它們的組合提取內(nèi)容(方框136)。一些實施方式可以實現(xiàn)為虛擬WebRTC代理管理器16可以向第一 WebRTC交互流18、第二 WebRTC交互流22、或它們的組合注入內(nèi)容(方框148)。例如,虛擬WebRTC代理管理器16可以向WebRTC交互流18和/或22中插入附加的音頻、視頻和/或數(shù)據(jù)。根據(jù)一些實施方式,虛擬WebRTC代理管理器16可以記錄第一 WebRTC交互流18的內(nèi)容、第二 WebRTC交互流22的內(nèi)容、或它們的組合(方框150)。在一些實施方式中,虛擬WebRTC代理管理器16可以轉(zhuǎn)換第一 WebRTC交互流18的內(nèi)容、第二 WebRTC交互流22的內(nèi)容、或它們的組合(方框152)。
[0055]虛擬WebRTC代理管理器16隨后確定第一 WebRTC交互流18或第二 WebRTC交互流22的任一個是否已經(jīng)終止(方框154)。如果第一 WebRTC交互流18和第二 WebRTC交互流22都仍然激活,處理返回至圖5C的方框136。否則,虛擬WebRTC代理管理器16在合適時終止剩余的激活WebRTC交互流18或22 (方框156)。
[0056]圖6以適合于執(zhí)行指令以實現(xiàn)在此描述的功能的示范性計算機系統(tǒng)160的示范性形式提供處理系統(tǒng)158的示意圖表示。在一些實施方式中,處理系統(tǒng)158可以執(zhí)行指令以實現(xiàn)圖1的WebRTC應(yīng)用提供器52和虛擬WebRTC代理管理器16的功能。在這一點上,處理系統(tǒng)158可以包括計算機系統(tǒng)160,其中用于使得處理系統(tǒng)158運行在此描述的方法中的任意一個或多個的一組指令被執(zhí)行。處理系統(tǒng)158可以連接到(作為非限制性例子,組網(wǎng)連接)局域網(wǎng)(LAN)、內(nèi)部網(wǎng)、外部網(wǎng)或互聯(lián)網(wǎng)中的其他機器。處理系統(tǒng)158可以工作于客戶端-服務(wù)器網(wǎng)絡(luò)環(huán)境下,或作為端對端(或分布式)網(wǎng)絡(luò)環(huán)境中的端設(shè)備。盡管只示出了單個處理系統(tǒng)158,術(shù)語“控制器”和“服務(wù)器”應(yīng)當(dāng)也被認(rèn)為包括單獨地或聯(lián)合地執(zhí)行一組(或多組)指令以實現(xiàn)在此描述的方法的任意一個或多個的設(shè)備的任意集合。處理系統(tǒng)158可以是服務(wù)器、個人計算機、桌面計算機、膝上型計算機、個人數(shù)字助理(PDA)、計算平板電腦、移動設(shè)備、或者任意其他設(shè)備,并且可以表現(xiàn)為服務(wù)器或用戶的計算機,作為非限制性例子。
[0057]示范性計算機系統(tǒng)160包括處理設(shè)備或處理器162,主存儲器164 (作為非限制性例子,只讀存儲器(ROM)、閃存、諸如同步DRAM (SDRAM)的動態(tài)隨機訪問存儲器(DRAM)等等),以及靜態(tài)存儲器166 (作為非限制性例子,閃存、靜態(tài)隨機訪問存儲器(SRAM)等等),它們可以經(jīng)由總線168互相通信。可替代地,處理設(shè)備162可以直接地或經(jīng)由一些其他連接方式連接到主存儲器164和/或靜態(tài)存儲器166。
[0058]處理設(shè)備162代表一個或多個處理設(shè)備,例如微處理器、中央處理單元(CPU)或者類似物。更特別地,處理設(shè)備162可以是復(fù)雜指令集計算(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、執(zhí)行其他指令集的處理器、或者執(zhí)行指令集的組合的處理器。處理設(shè)備162被配置為執(zhí)行用于實現(xiàn)在此描述的操作和步驟的指令170和/或緩存的指令172中的處理邏輯。
[0059]計算機系統(tǒng)160可以進(jìn)一步包括形式為網(wǎng)絡(luò)接口設(shè)備174的通信接口。它還可以包括或者不包括輸入176以接收當(dāng)執(zhí)行指令170、172時要通信到計算機系統(tǒng)160的輸入和選擇。它還可以包括或不包括輸出178,包括但不限定為顯示器180。顯示器180可以是視頻顯示單元(作為非限制性例子,液晶顯示器(LCD)或陰極射線管(CRT))、文字?jǐn)?shù)字輸入設(shè)備(作為非限制性例子,鍵盤)、指針控制設(shè)備(作為非限制性例子,鼠標(biāo))、和/或觸摸屏設(shè)備(作為非限制性例子,平板輸入設(shè)備或屏幕)。
[0060]計算機系統(tǒng)160可以包括或不包括數(shù)據(jù)存儲設(shè)備182,其包括使用驅(qū)動器184在計算機可讀介質(zhì)186中存儲在此描述的功能,計算機可讀介質(zhì)186上存儲了實施在此描述的方法或功能的任意一個或多個的一個或多個指令集188 (例如軟件)。功能可以包括處理系統(tǒng)158、參與的用戶設(shè)備、和/或許可服務(wù)器的方法和/或其他功能,作為非限制性例子。當(dāng)被計算機系統(tǒng)160執(zhí)行期間,一個或多個指令集188也可以完全地或至少部分地駐存在主存儲器164和/或處理設(shè)備162中。主存儲器164和處理設(shè)備162還組成機器可訪問存儲媒體。指令170、172和/或188可以進(jìn)一步在網(wǎng)絡(luò)190上經(jīng)由網(wǎng)絡(luò)接口設(shè)備174發(fā)送或接收。網(wǎng)絡(luò)190可以是內(nèi)部網(wǎng)絡(luò)或者互聯(lián)網(wǎng)絡(luò)。
[0061]盡管計算機可讀介質(zhì)186在示范性實施方式中被示為單個媒體,術(shù)語“機器可訪問存儲媒體”應(yīng)當(dāng)被認(rèn)為包括存儲一個或多個指令集188的單個媒體或多個媒體(作為非限制性例子,集中或分布式數(shù)據(jù)庫、和/或關(guān)聯(lián)的緩存和服務(wù)器)。術(shù)語“機器可訪問存儲介質(zhì)”還應(yīng)當(dāng)被認(rèn)為包括能夠存儲、編碼或攜帶用于由機器執(zhí)行的指令集170、172和/或188的、以及使得機器運行在此公開的方法的任意一個或多個的任意介質(zhì)。術(shù)語“機器可訪問存儲介質(zhì)”相應(yīng)地應(yīng)當(dāng)認(rèn)為包括但不限于固態(tài)存儲器、光或磁媒體、以及載波信號。
[0062]在此公開的實施方式可以實施在硬件中以及在存儲在硬件上的指令中,該指令并且可以駐存在作為非限制性例子的隨機訪問存儲器(RAM)、閃存、只讀存儲器(ROM)、電子可編程ROM(EPROM)、電子可擦寫可編程ROM (EEPROM)、寄存器、硬盤、可移除磁盤、CD-ROM或者本領(lǐng)域已知的任意其他形式的計算機可讀介質(zhì)中。示范性存儲介質(zhì)被耦合到處理器從而處理器能夠從存儲介質(zhì)讀取信息并且向存儲介質(zhì)寫入信息??商鎿Q的,存儲介質(zhì)可以集成到處理器中。處理器和存儲介質(zhì)可以駐存在專門應(yīng)用集成電路(ASIC)中。ASIC可以駐存在遠(yuǎn)程站中??商娲?,處理器和存儲介質(zhì)可以作為離散的組件駐存在遠(yuǎn)程站、基站或服務(wù)器中。
[0063]需要注意的是在這里的任意示范性實施方式中描述的操作步驟被描述為提供示例和討論。描述的操作可以執(zhí)行于很多種不同順序中而不是所示的順序。進(jìn)一步的,描述在單個操作步驟中的操作可以實際上被執(zhí)行于多個不同步驟中。此外,描述在示范性實施方式中的一個或多個操作步驟可以被組合??梢岳斫獾氖窃诹鞒虉D中示出的操作步驟可以服從于很多種不同的修改,這對于本領(lǐng)域技術(shù)人員而言是顯然的。本領(lǐng)域技術(shù)人員也會理解信息和信號可以使用任意各種不同技術(shù)和提巧表示。作為非限制性例子,可能在上述說明書全文中引用的數(shù)據(jù)、指令、命令、信息、信號、比特、符號和芯片可以由電壓、電流、電磁波、磁場或微粒、光場或微粒、或它們的任意組合來表不。
[0064]本公開的上述說明書被提供用于使得任意本領(lǐng)域技術(shù)人員能夠制造或使用本公開。對本公開的各種修改對本領(lǐng)域技術(shù)人員而言是顯然的,并且在此定義的基本原理可以應(yīng)用到其他變化中而不脫離本公開的精神或范圍。因而,本公開并不意圖受限于在此描述的示例和設(shè)計,而應(yīng)當(dāng)符合與在此公開的的原理和新穎特征相符的最大范圍。
【權(quán)利要求】
1.一種用于提供背靠背虛擬web實時通信(WebRTC)代理的方法,包括: 由在計算設(shè)備上執(zhí)行的WebRTC服務(wù)器接收第一 WebRTC客戶端和第二 WebRTC客戶端之間的WebRTC要約/應(yīng)答交換; 實例化一個或多個虛擬WebRTC代理; 在第一 WebRTC客戶端和所述一個或多個虛擬WebRTC代理中的一個之間建立第一WebRTC交互流,以及在第二 WebRTC客戶端和所述一個或多個虛擬WebRTC代理中的一個之間建立第二 WebRTC交互流;以及 經(jīng)由所述一個或多個虛擬WebRTC代理,將第一 WebRTC交互流的內(nèi)容引導(dǎo)到第二WebRTC交互流,以及將第二 WebRTC交互流的內(nèi)容引導(dǎo)到第一 WebRTC交互流。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括從第一WebRTC交互流或第二 WebRTC交互流、或它們的組合提取內(nèi)容。
3.如權(quán)利要求1所述的方法,進(jìn)一步包括向第一WebRTC交互流或第二WebRTC交互流、或它們的組合注入內(nèi)容。
4.如權(quán)利要求1所述的方法,進(jìn)一步包括記錄第一WebRTC交互流的內(nèi)容或第二WebRTC交互流的內(nèi)容、或它們的組合。
5.如權(quán)利要求1所述的方法,進(jìn)一步包括轉(zhuǎn)換第一WebRTC交互流的內(nèi)容或第二WebRTC交互流的內(nèi)容、或它們的組合。
6.如權(quán)利要求1所述的方法,進(jìn)一步包括基于WebRTC要約/應(yīng)答交換、在所述WebRTC服務(wù)器與第一 WebRTC客戶端和第二 WebRTC客戶端中的一個或多個之間的查詢/響應(yīng)交換、或者超文本傳輸協(xié)議(HTTP)頭部數(shù)據(jù)、或它們的組合,確定第一 WebRTC客戶端和第二WebRTC客戶端是否兼容。
7.如權(quán)利要求6所述的方法,其中實例化所述一個或多個虛擬WebRTC代理包括:響應(yīng)于確定第一 WebRTC客戶端與第二 WebRTC客戶端兼容,實例化與第一 WebRTC客戶端和第二WebRTC客戶端兼容的虛擬WebRTC代理。
8.如權(quán)利要求6所述的方法,其中實例化所述一個或多個虛擬WebRTC代理包括:響應(yīng)于確定第一 WebRTC客戶端與第二 WebRTC客戶端不兼容: 實例化與第一 WebRTC客戶端兼容的第一虛擬WebRTC代理;以及 實例化與第二 WebRTC客戶端兼容的第二虛擬WebRTC代理。
9.一種用于提供背靠背虛擬web實時通信(WebRTC)代理的系統(tǒng),包括: 至少一個通信接口 ;以及 與該至少一個通信接口相關(guān)聯(lián)的WebRTC服務(wù)器,該WebRTC服務(wù)器包括WebRTC應(yīng)用提供器,所述WebRTC應(yīng)用提供器被配置為接收第一 WebRTC客戶端和第二 WebRTC客戶端之間的WebRTC要約/應(yīng)答交換;以及 所述WebRTC服務(wù)器進(jìn)一步包括虛擬WebRTC代理管理器,所述虛擬WebRTC代理管理器被配置為: 實例化一個或多個虛擬WebRTC代理; 在第一 WebRTC客戶端和所述一個或多個虛擬WebRTC代理中的一個之間建立第一WebRTC交互流,以及在第二 WebRTC客戶端和所述一個或多個虛擬WebRTC代理中的一個之間建立第二 WebRTC交互流;以及 經(jīng)由所述一個或多個虛擬WebRTC代理,將第一 WebRTC交互流的內(nèi)容引導(dǎo)到第二WebRTC交互流,以及將第二 WebRTC交互流的內(nèi)容引導(dǎo)到第一 WebRTC交互流。
10.一種非暫時性計算機可讀介質(zhì),在其上存儲有計算機可執(zhí)行指令,所述指令使得處理器執(zhí)行一種方法,其包括: 接收第一 WebRTC客戶端和第二 WebRTC客戶端之間的web實時通信(WebRTC)要約/應(yīng)答交換; 實例化一個或多個虛擬WebRTC代理; 在第一 WebRTC客戶端和一個或多個虛擬WebRTC代理的一個之間建立第一 WebRTC交互流,以及在第二 WebRTC客戶端和一個或多個虛擬WebRTC代理的一個之間建立第二WebRTC交互流;以及 經(jīng)由一個或多個虛擬WebRTC代理,將第一 WebRTC交互流的內(nèi)容弓丨導(dǎo)到第二 WebRTC交互流,以及將第二 WebRTC交互流的內(nèi)容引導(dǎo)到第一 WebRTC交互流。
【文檔編號】H04L29/06GK104253857SQ201410399696
【公開日】2014年12月31日 申請日期:2014年6月30日 優(yōu)先權(quán)日:2013年6月30日
【發(fā)明者】A·B·約翰斯頓, J·H·約亞庫姆 申請人:阿瓦亞公司