本發(fā)明預(yù)期使能夠在任何數(shù)量的節(jié)點(大于或等于兩個節(jié)點)之間進行實時對等式連接。
[0041]再次參考圖2,為了建立對等式連接和開始實時對等式通信,客戶端計算裝置112A、112B、112C中的任何一個可發(fā)送開始對等式通信的消息(“startPeerToPeer”),而不管誰在承載協(xié)作會話。例如,如圖2中所示,客戶端計算裝置112B可發(fā)送startPeerToPeer消息(流程 202)。例如,startPeerToPeer 消息可使用 ColIaborat1nManagerftsendBroadcastMessage來發(fā)送以便確保startPeerToPeer消息發(fā)送到參與協(xié)作會話的所有節(jié)點。startPeerToPeer消息可因此廣播到在遠(yuǎn)程訪問應(yīng)用周圍協(xié)作的每個節(jié)點。例如,startPeerToPeer消息可從客戶端計算裝置112B發(fā)送到協(xié)作服務(wù)106。接著,協(xié)作服務(wù)106可將startPeerToPeer消息廣播到客戶端計算裝置112A、112B、112C(流程204)。此外,在對等式發(fā)現(xiàn)階段240期間,客戶端計算裝置112A、112B、112C可繼續(xù)在遠(yuǎn)程訪問應(yīng)用周圍協(xié)作(例如,狀態(tài)模型200繼續(xù)在客戶端計算裝置112A、112B、112C與協(xié)作服務(wù)106之間傳遞)。使用協(xié)作管理器110,可能識別活動會話和參與者(例如,客戶端計算裝置112A、112B、112C)ο
[0042]在接收startPeerToPeer消息之后,接收節(jié)點(即,本地對等裝置)可例如使用API (諸如getUserMedia)訪問并存儲其本地媒體資源。本地對等裝置可從協(xié)作會話信息識別一個或多個對等裝置(即,遠(yuǎn)程對等裝置)。例如,本地對等裝置可獲得活動會話識別符(例如,與使用“Collaborat1nManager#getActiveSess1ns”的遠(yuǎn)程活動對等裝置相關(guān)聯(lián)的會話識別符)的清單和其自身本地會話識別符(使用“Collaborat1nManager#getSessionld”)(流程206)。如上述,協(xié)作服務(wù)106可維持會話信息作為狀態(tài)信息的部分,例如,作為狀態(tài)模型200的部分。因此,可能確定在給定時間使用協(xié)作管理器110遠(yuǎn)程地訪問應(yīng)用的裝置。本地對等裝置可接著比較其會話識別符(“l(fā)ocalSess1nld”)與每個獲得的其它活動會話識別符(“remoteSess1nld”)。本地對等裝置可識別大于自身會話識別符的活動會話識別符(“l(fā)ocalSess1nlcKremoteSess1nld”)。以此方式,本地對等裝置可使用最小作業(yè)量識別發(fā)送有提議消息的對等裝置。換句話說,本地對等裝置可將提議消息發(fā)送到具有較大會話識別符的對等裝置而不將提議消息發(fā)送到具有較小會話識別符的對等裝置。這防止將提議消息從一對裝置中的每個發(fā)送到所述對中的另一個。例如,在圖2的三個節(jié)點會話中,客戶端計算裝置112A將提議消息發(fā)送到客戶端計算裝置112B、112C,客戶端計算裝置112B將提議消息發(fā)送到客戶端計算裝置112C,而客戶端計算裝置112C不發(fā)送任何提議消息。因此,可能降低在建立對等式連接時發(fā)送的總消息數(shù)量。此外,可能將對等式連接的數(shù)量限于每對裝置一個。還應(yīng)了解,可替代地,本地對等裝置可比較其會話識別符與每個獲得的活動會話識別符(“l(fā)ocalSess1nId>remoteSess1nId”)并僅將提議消息發(fā)送到具有較小會話識別符的對等裝置以完成相同目的。換句話說,本地對等裝置可將提議消息發(fā)送到具有較小會話識別符的對等裝置而不將提議消息發(fā)送到具有較大會話識別符的對等裝置??商娲鼗虼送?,本地對等裝置可使用遵循協(xié)議(I)的任何函數(shù)來確定將提議消息發(fā)送到哪個裝置。
[0043]f(a,a)=假(I)
[0044]當(dāng)且僅當(dāng)a !=假時,f(a,b)=真
[0045]接著,對于具有較大會話識別符的每個對等裝置,本地對等裝置可例如使用API (諸如PeerConnect1n)創(chuàng)建本地對等連接對象。本地對等裝置可接著將如上所論述般存儲的其本地媒體資源附接到本地對等連接對象。本地對等裝置可基于目的地會話識別符(例如,發(fā)送有提議消息的裝置的會話識別符)存儲本地對等連接對象。因此,可存儲且隨后訪問每個本地對等連接對象(即,每個對等連接I個)。
[0046]本地對等裝置可接著例如使用API (諸如PeerConnect1n)創(chuàng)建提議消息(“createOffer”)。提議消息可包括與本地對等裝置相關(guān)聯(lián)的一個或多個屬性。所述屬性可包括關(guān)于需要建立對等式連接的本地對等裝置的任何信息。本地對等裝置可將自身會話識別符添加到提議消息的字段(諸如“from field” ),這允許發(fā)送有提議消息的裝置識別來源裝置。例如,本地對等裝置可接著將提議消息發(fā)送到目的地節(jié)點(即,遠(yuǎn)程對等裝置)。例如,這可使用Collaborat1nManager#sendMessage來完成。例如,在圖2的三個節(jié)點會話中,客戶端計算裝置112A將提議消息發(fā)送到客戶端計算裝置112B、112C(例如,圖2中的發(fā)送(客戶端2)提議客戶端1-2和發(fā)送(客戶端3)提議客戶端1-3),客戶端計算裝置112B將提議消息發(fā)送到客戶端計算裝置112C(例如,圖2中的發(fā)送(客戶端3)提議客戶端2-3),而客戶端計算裝置112C不發(fā)送任何提議消息(流程208)。如圖2中所示,本地對等裝置將提議消息發(fā)送到協(xié)作服務(wù)106,協(xié)作服務(wù)106將提議消息傳遞到遠(yuǎn)程對等裝置。例如,協(xié)作服務(wù)106將提議消息從客戶端計算裝置112A傳遞到客戶端計算裝置112B、112C(例如,圖2中的提議客戶端1-2和提議客戶端1-3),而協(xié)作服務(wù)106將提議消息從客戶端計算裝置112B傳遞到客戶端計算裝置112C(例如,圖2中的提議客戶端2-3)(流程210)。此外,客戶端計算裝置112A、112B、112C可繼續(xù)在遠(yuǎn)程訪問應(yīng)用周圍協(xié)作(例如,狀態(tài)模型200繼續(xù)在客戶端計算裝置112A、112B、112C與協(xié)作服務(wù)106之間傳遞)。
[0047]在接收提議消息之后,遠(yuǎn)程對等裝置可例如使用API (諸如PeerConnect1n)創(chuàng)建遠(yuǎn)程對等連接對象。遠(yuǎn)程對等裝置可將如上所論述般存儲的其本地媒體資源附接到遠(yuǎn)程對等連接對象。遠(yuǎn)程對等裝置也可將與本地對等裝置相關(guān)聯(lián)的一個或多個屬性(“setRemoteDescript1n”)附接到遠(yuǎn)程對等連接對象。遠(yuǎn)程對等裝置可接著例如使用API (諸如PeerConnect1n)創(chuàng)建應(yīng)答消息(“createAnswer”)。應(yīng)答消息可包括與遠(yuǎn)程對等裝置相關(guān)聯(lián)的一個或多個屬性。所述屬性可包括關(guān)于需要建立對等式連接的遠(yuǎn)程對等裝置的任何信息。
[0048]遠(yuǎn)程對等裝置可將其自身會話識別符添加到應(yīng)答消息的字段(諸如“fromfield”),這允許發(fā)送有應(yīng)答消息的裝置識別來源裝置。例如,遠(yuǎn)程對等裝置可接著將應(yīng)答消息發(fā)送回到本地對等裝置。例如,這可使用Collaborat1nManager#sendMessage來完成。在接收應(yīng)答消息之后,本地對等裝置可訪問基于目的地會話識別符存儲的本地對等連接對象,并附接與遠(yuǎn)程對等裝置相關(guān)聯(lián)的一個或多個屬性(“setRemoteDescript1n”)。例如,在圖2的三個節(jié)點會話中,客戶端計算裝置112C將應(yīng)答消息發(fā)送到客戶端計算裝置112A、112B (例如,圖2中的發(fā)送(客戶端I)應(yīng)答客戶端3_1和發(fā)送(客戶端2)應(yīng)答客戶端3-2),而客戶端計算裝置112B將應(yīng)答消息發(fā)送到客戶端計算裝置112A(例如,圖2中的發(fā)送(客戶端I)應(yīng)答客戶端2-1)(流程212)。此外,如圖2中所示,遠(yuǎn)程對等裝置將應(yīng)答消息發(fā)送到協(xié)作服務(wù)106,而協(xié)作服務(wù)106將應(yīng)答消息傳遞到本地對等裝置。例如,在圖2的三個節(jié)點會話中,協(xié)作服務(wù)106將應(yīng)答消息從客戶端計算裝置112C傳遞到客戶端計算裝置112A、112B(例如,圖2中的應(yīng)答客戶端3_1和應(yīng)答客戶端3_2),而協(xié)作服務(wù)106將應(yīng)答消息從客戶端計算裝置112B傳遞到客戶端計算裝置112A(例如,圖2中的應(yīng)答客戶端2_1)(流程214)。此外,客戶端計算裝置112A、112B、112C可繼續(xù)在遠(yuǎn)程訪問應(yīng)用周圍協(xié)作(例如,狀態(tài)模型200繼續(xù)在客戶端計算裝置112A、112B、112C與協(xié)作服務(wù)106之間傳遞)。
[0049]接著進行本地對等裝置與遠(yuǎn)程對等裝置之間的對等式連接。如上所述,在已交換所有提議消息和應(yīng)答消息之后,對等式框架118A、118B、118C連接本地對等連接對象和遠(yuǎn)程對等連接對象,且可通知所述裝置中的每個流式傳輸已開始(例如,通過觸發(fā)“onaddstream event”)。例如,如圖2中所示,在客戶端計算裝置112A與112B、客戶端計算裝置112A與112C和客戶端計算裝置112B與112C之間建置各自對等式連接300。在建立對等式連接300之后,媒體內(nèi)容可在客戶端計算裝置112A、112B、112C之間流式傳輸。此夕卜,媒體內(nèi)容可在無需由協(xié)作服務(wù)106管理的情況下流式傳輸,這降低協(xié)作服務(wù)106上的負(fù)荷。例如,在對等式通信階段250期間,客戶端計算裝置112A、112B、112C可繼續(xù)在遠(yuǎn)程訪問應(yīng)用周圍協(xié)作(例如,狀態(tài)模型200繼續(xù)在客戶端計算裝置112A、112B、112C與協(xié)作服務(wù)106之間傳遞)。因此,可能使用協(xié)作服務(wù)106發(fā)現(xiàn)對等裝置(例如,參與協(xié)作會話的對等裝置)并建立對等式連接。此外,對等式框架(諸如圖1中所示的對等式框架118A、118B、118C)例如可用于共享對等式連接的內(nèi)容。此外,例如,可能在遠(yuǎn)程訪問應(yīng)用周圍協(xié)作,并且提供對等式通信能力,諸如會議技術(shù)能力。在開始時,實時、對等式通信不利用協(xié)作服務(wù)106的資源。因此,可能降低協(xié)作服務(wù)106上的負(fù)荷,因為使用對等式連接而非使用協(xié)作服務(wù)106共享媒體內(nèi)容。應(yīng)了解,在多個節(jié)點之間提供實時、對等式通信需要大量網(wǎng)絡(luò)資源,這可使網(wǎng)絡(luò)資源要擔(dān)負(fù)提供協(xié)作服務(wù)。
[0050]此外,在新裝置添加到現(xiàn)有實時對等式會話時,新裝