TWI458369B - 用於建立及使用備用通信頻道之裝置及方法 - Google Patents

用於建立及使用備用通信頻道之裝置及方法 Download PDF

Info

Publication number
TWI458369B
TWI458369B TW099132455A TW99132455A TWI458369B TW I458369 B TWI458369 B TW I458369B TW 099132455 A TW099132455 A TW 099132455A TW 99132455 A TW99132455 A TW 99132455A TW I458369 B TWI458369 B TW I458369B
Authority
TW
Taiwan
Prior art keywords
nat
communication
data
service
primary
Prior art date
Application number
TW099132455A
Other languages
English (en)
Other versions
TW201136372A (en
Inventor
Berkat S Tung
Barry A Whitebook
Joe S Abuan
Hyeonkuk Jeong
Yan Yang
Roberto Garcia
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of TW201136372A publication Critical patent/TW201136372A/zh
Application granted granted Critical
Publication of TWI458369B publication Critical patent/TWI458369B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/34Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using peer-to-peer connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/40Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network
    • A63F2300/406Transmission via wireless network, e.g. pager or GSM
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/40Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network
    • A63F2300/408Peer to peer connection
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5546Details of game data or player data management using player registration data, e.g. identification, account, preferences, game history
    • A63F2300/5566Details of game data or player data management using player registration data, e.g. identification, account, preferences, game history by matching opponents or finding partners to build a team, e.g. by skill level, geographical area, background, play style
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Child & Adolescent Psychology (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

用於建立及使用備用通信頻道之裝置及方法
本發明大體而言係關於電腦網路連接之領域。更特定言之,本發明係關於一種用於建立及使用用於行動器件之備用通信頻道的改良之裝置及方法。
優先權之主張
本申請案主張2010年4月7日申請的題為「用於建立及使用備用通信頻道之裝置及方法(Apparatus and Method For Establishing and Utilizing Backup Communication Channels)」之美國臨時申請案第61 321,841號的優先權。
當Apple之iPhone 4的原型在2010年3月25日自Apple工程師身上顯然被竊取時,待在本申請案中揭示及主張之發明過早地且在無Apple之授權的情況下向公眾揭示。本申請案所基於之美國優先權申請案在該顯然竊取發生之前並未提出申請。
A. 網路位址轉譯(「NAT」)
大型公用網路(諸如,網際網路)常常連接至較小的私有網路(諸如,由公司、網際網路服務提供商或甚至個別家庭維持之彼等網路)。理所當然的,公用網路必須對網路位址(亦即,公用位址)之分配達成共識。由於多種原因,私有網路之維持者常常選擇使用並非達成共識之分配之部分的私有網路位址用於私有網路。因此,為了使得來自私有網路之網路訊務能夠周遊公用網路,需要某種形式之私有/公用網路位址轉譯(「NAT」)。
執行NAT操作之器件變更自私有網路發出之資料封包以遵照公用網路之定址方案。特定言之,網路位址轉譯器用其自身的公用位址及指派的連接埠號碼替換封包之起源私有位址及連接埠號碼。網路位址轉譯器亦變更電腦在私有網路上所接收之資料封包,以用預定接收者的正確之私有位址及連接埠號碼替換目的地公用位址及連接埠號碼。如本文中所使用,如一般熟習此項技術者所理解,在內容背景中適當時,術語「位址」應解釋為包括位址與連接埠號碼兩者。
NAT在現代網路計算中已日益變成常見的。NAT之一優點在於:其減緩了公用網路位址空間之耗盡。舉例而言,用於網際網路上之TCP/IP定址包含四個字串,每一字串具有三個數字,從而提供一有限位址空間。另外,此位址空間之某些部分被預留以用於特定用途或使用者,從而進一步耗盡可用位址之實際數目。然而,若使用NAT,則私有網路或子網路可使用任意數目個位址,且仍向外部世界僅呈現一單一的標準化公用位址。此使得可用位址之數目實際上無限,此係因為每一私有網路在理論上可使用完全相同的私有位址。
藉由NAT提供之一優點為安全性增加,此起因於以下事實:公用網路上之彼等位址無法判定私有網路上之電腦的實際(亦即,私有)網路位址。此係因為藉由網路位址轉譯器而僅將公用位址提供於公用網路上。另外,此公用位址可對應於私有網路上的任何數目個電腦。
不同NAT類型使用不同的安全性等級。舉例而言,在「完整圓錐型NAT(full cone NAT)」之情況下,一次將一內部位址(iAddr:iPort)映射至一外部位址(eAddr:ePort),任何外部主機可藉由將封包發送至eAddr:ePort而將封包發送至iAddr:iPort。在「受限圓錐型NAT」之情況下,僅在iAddr:iPort先前已將封包發送至hAddr時,具有位址hAddr之外部主機才可藉由將封包發送至eAddr:ePort而將封包發送至iAddr:iPort。外部主機之連接埠不相關。在「連接埠受限圓錐型NAT」之情況下,僅在iAddr:iPort先前已將封包發送至hAddr:hPort時,具有位址連接埠hAddr:hPort之外部主機才可藉由將封包發送至eAddr:ePort而將封包發送至iAddr:iPort。最後,在對稱式NAT之情況下,將自同一iAddr:iPort至特定目的地IP位址及連接埠的每一請求映射至一唯一eAddr:ePort。若同一內部主機將封包發送至不同目的地,則使用不同的外部位址及連接埠映射。僅自內部主機接收到封包之外部主機可將封包發送回至內部主機。
B. 同級間網路連接情況下之NAT問題
同級間(「P2P」)計算指代由計算節點組成之分散式網路架構,該等計算節點使其資源之一部分直接可用於其他網路參與者。P2P網路中之同級者彼此建立直接通信頻道且充當用戶端與伺服器兩者,與伺服器供應資源且用戶端消耗資源之傳統用戶端-伺服器模型形成對比。
針對P2P連接,上文所描述之NAT操作引起眾多問題。舉例而言,若兩個同級者中之一者或兩者位於上文所描述之NAT類型中的一或多者之後,則在該兩個同級者之間建立直接連接日益變得困難。此問題由於以下事實而加重:諸如Apple iPod Touch、Apple iPhone、Apple iPad及各種其他器件(例如,RIM Blackberry器件、Palm Pre器件等)之行動器件常常在具有不同NAT實施之網路之間移動。舉例而言,Apple iPhoneTM 能夠經由以下網路通信:Wi-Fi網路(例如,802.11b,g,n網路);3G網路(例如,通用行動電信系統(「UMTS」)網路、高速上行鏈路封包存取(「HSUPA」)網路等);及藍芽網路(稱為個人區域網路(「PAN」))。未來行動器件將能夠經由額外通信頻道通信,額外通信頻道諸如(僅舉幾個例子)WiMAX、國際行動電信(「IMT」)進階及長期演進(「LTE」)進階。
描述一種用於建立、維持及使用一同級間(「P2P」)網路中之備用頻道之裝置、方法及機器可讀媒體。舉例而言,在一實施例中,每一行動器件可與一或多個其他行動器件建立一主要P2P通信頻道。一旦建立該主要頻道,每一行動器件便可使用該主要頻道來交換次要頻道連接資料且可隨後開啟與該等其他行動器件之一或多個次要P2P通信頻道。在偵測到該主要P2P通信頻道發生故障或降級至低於一特定臨限值(例如,一頻寬或位元速率臨限值)後,便可自動地促使該等次要P2P通信頻道中之一者成為一主要P2P通信頻道。
可結合以下圖式自以下詳細描述獲得對本發明之更好理解。
下文描述用於在網路上建立、維持及使用主要及/或備用同級間(「P2P」)通信頻道之裝置、方法及機器可讀媒體的實施例。亦描述分別用於邀請使用者進行P2P會期及令使用者匹配以進行P2P會期之邀請服務及配對服務。另外,描述中繼服務,其允許使用者在某些特定條件下建立中繼連接。最後,描述應用程式框架及相關聯之應用程式設計介面(API),其允許應用程式開發者設計利用本文中所描述之各種共同作業式線上特徵的應用程式。
貫穿此描述,出於解釋之目的,闡述眾多特定細節以便提供對本發明之透徹理解。然而,對於熟習此項技術者而言,將顯而易見的係,本發明可在無此等特定細節中之一些細節之情況下加以實踐。在其他例子中,未展示或以方塊圖形式展示熟知結構及器件以避免混淆本發明之基礎原理。
用於有效地且安全地交換連接資料之裝置及方法
圖1 中所說明,實施於本發明之一實施例中之一般網路拓撲可包括一「用戶端」或「同級」行動計算器件群組A至D(120至123),該群組分別經由網路120而彼此通信且與一或多個服務110至112通信。雖然在圖1中將「網路」120說明為單一網路雲端,但「網路」120可包括多種不同組件,包括(僅舉幾個例子)公用網路(諸如,網際網路)及私有網路(諸如,區域Wi-Fi網路(例如,802.11n 本籍無線網路或無線熱點)、區域乙太網路、蜂巢式資料網路(例如,3G、Edge等),及WiMAX網路)。舉例而言,行動器件A 120可連接至藉由網路鏈路125表示之本籍Wi-Fi網路,行動器件B 121可連接至藉由網路鏈路126表示之3G網路(例如,通用行動電信系統(「UMTS」)、高速上行鏈路封包存取(「HSUPA」)等),行動器件C 122可連接至藉由網路鏈路127表示之WiMAX網路,且行動器件123可連接至藉由網路鏈路128表示之公用Wi-Fi網路。行動器件120至123經由其而得以連接之區域網路鏈路125至128中之每一者可經由閘道器及/或NAT器件(圖1中未圖示)而耦接至公用網路(諸如,網際網路),藉此致能各種行動器件120至123之間的經由公用網路之通信。然而,若兩個行動器件處於同一區域網路或私有網路(例如,同一Wi-Fi網路)上,則該兩個器件可繞過公用網路經由彼區域/私有網路直接通信。當然,請注意,本發明之基礎原理不限於網路類型或網路拓撲之任何特定集合。
圖1 中所說明之行動器件120至123中之每一者可與連接資料交換(CDX)服務110、配對服務111及邀請服務112通信。在一實施例中,服務110至112可實施為跨越一或多個實體計算器件(諸如,伺服器)執行之軟體。如圖1中所展示,在一實施例中,於藉由同一實體(例如,同一資料服務提供商)管理且可由行動器件120至123中之每一者經由網路120存取較大資料服務100之內容背景內,可實施服務110至112。資料服務100可包括連接各種類型之伺服器及資料庫之區域網路(例如,基於乙太網路之LAN)。資料服務100亦可包括用於儲存資料之一或多個儲存區域網路(「SAN」)。在一實施例中,資料庫儲存並管理與行動器件120至123中之每一者及彼等器件之使用者有關的資料(例如,使用者帳戶資料、器件帳戶資料、使用者應用程式資料,...等)。
在一實施例中,配對服務111可基於特定條件集合而使兩個或兩個以上行動器件匹配以進行共同作業式P2P會期。舉例而言,該等行動器件中之兩者或兩個以上者之使用者可能對玩一特定多玩家遊戲感興趣。在此狀況下,配對服務111可基於諸如以下各者之變數而識別參與該遊戲之一行動器件群組:每一使用者之專業等級、該等使用者中之每一者之年齡、匹配請求之時序、請求匹配所針對之特定遊戲及各種遊戲特有變數。舉例而言,且並非限制,配對服務111可試圖使在玩特定遊戲方面具有類似專業等級之使用者匹配。另外,可使成人與其他成人匹配且可使兒童與其他兒童匹配。此外,配對服務111可基於接收到使用者請求之次序而排定該等請求之優先次序。本發明之基礎原理不限於任何特定匹配準則集合或任何特定類型之P2P應用程式。
如下文詳細描述,回應於匹配請求,配對服務111可與CDX服務110協調以確保所有匹配之參與者接收到用於以有效且安全之方式建立P2P會期所必要的連接資料。
在一實施例中,邀請服務112亦識別用於參與共同作業式P2P會期之行動器件。然而,在邀請服務112之狀況下,該等參與者中之至少一者特別地被另一參與者識別。舉例而言,行動器件A 120之使用者可特別地請求與行動器件B 121之使用者的共同作業式會期(例如,藉由使用者ID或電話號碼識別行動器件B)。如同配對服務111,回應於邀請請求,邀請服務112可識別該參與者集合且與CDX服務110協調以確保所有參與者接收到用於以有效且安全之方式建立P2P會期所必要的連接資料。
如上文所敍述,在一實施例中,CDX服務110作為在兩個或兩個以上行動器件之間建立P2P會期所需的連接資料之中央交換點來操作。具體言之,CDX服務之一實施例回應於行動器件請求而產生NAT周遊(NAT traversal)資料(有時稱作「打孔(Hole Punch)」資料),以使得外部服務及用戶端能夠經由每一行動器件之NAT通信(亦即,經由NAT「打孔」以到達該器件)。舉例而言,在一實施例中,CDX服務偵測與行動器件通信所需之外部IP位址及連接埠並將此資訊提供給行動器件。在一實施例中,CDX服務亦接收並處理由配對服務111及邀請服務112產生之行動器件清單,且有效地並安全地將連接資料分配給包括於該等清單上之行動器件中之每一者(如下文詳細描述)。
在一實施例中,使用相對輕量型網路協定(諸如,使用者資料報協定(「UDP」))通訊端來建立行動器件與CDX服務110之間的通信。如熟習此項技術者所知,UDP通訊端連接並不需要用於保證封包可靠性、排序或資料完整性之交握對話,且因此並不消耗如TCP通訊端連接一般多的封包處理耗用。因此,UDP之輕量型、無狀態性質可用於答覆來自大量用戶端之小查詢的伺服器。此外,不同於TCP,UDP與封包廣播(其中將封包發送至區域網路上之所有器件)及多播(其中將封包發送至區域網路上之器件的子集)相容。如下文所描述,即使可使用UDP,但亦可藉由使用會期密鑰加密NAT周遊資料而維持在CDX服務110上之安全性。
與由CDX服務110使用之低耗用、輕量型網路協定形成對比,在一實施例中,藉由固有地為安全之網路協定(諸如,超文字安全傳送協定(「HTTPS」))建立行動器件120至123與配對服務111及/或邀請服務112之間的通信,該固有地為安全之網路協定依賴於安全通訊端層(「SSL」)或傳輸層安全性(「TLS」)連接。與此等協定相關聯之細節為熟習此項技術者所熟知。
2a 說明可由CDX伺服器實施之一系列例示性異動。當描述CDX服務之一實施例之操作時,以下術語將具有以下意義:
連接資料 -此為潛在同級者需要彼此交換以建立同級間會期 之資訊。下文描述可如何交換此資訊之機制的實施例。
CDX伺服器 -在一實施例中,CDX伺服器為允許經授權之實體交換任意資料之經鑑認多播反射程式(authenticated multicast reflector) 。此資料稱作有效負載
CDX會期- CDX會期指代彼此可經由CDX伺服器 通信之一用戶端器件群組。為會期之一部分的每一用戶端器件被指派一CDX票證 。每一會期具有一唯一CDX會期ID ,其為可用以識別或指代一個別會期之大整數。
CDX請求- 自用戶端器件向CDX伺服器 發送之請求。一請求大體上由兩個部分組成:CDX票證有效負載 。在此實施例中,有效負載為藉由會期密鑰 加密之連接資料
CDX回應- CDX回應為在CDX伺服器 接收到來自CDX會期 之成員的CDX請求 時「反射」回至CDX會期 中之其他器件的事物。藉由將有效負載 附加至用於給定CDX請求 中之CDX票證CDX票根 來建構CDX回應。
CDX票證- CDX票證告知CDX伺服器 如何向CDX會期 之成員發送有效負載 。在一實施例中,以CDX票證密鑰 對CDX票證「簽名」以防止偽造或竄改。如圖3中所說明,在一實施例中,CDX票證 含有以下資訊:
會期ID 301,其在一實施例中並未被加密或變模糊。
會期參與者之數目302,其在一實施例中並未被加密或變模糊。
此票證指代的會期之參與者的索引303(在一實施例中並未被加密或變模糊)。
期滿時間/日期304,在其之後將票證視為無效的(在一實施例中並未被加密或變模糊)。
用於會期之每一參與者之CDX打孔資料 305至306,其在一實施例中使用CDX票證密鑰 加密。
使用CDX票證密鑰 之訊息鑑認碼307,其充當「數位簽章」以確保票證為可信的。
CDX票根- CDX 票證之第一部分減去CDX打孔資料 及訊息鑑認碼。
有效負載- 此為CDX請求CDX回應 之第二部分。有效負載為用戶端器件希望在CDX會期 中向其他器件傳達之資料。在此實施例中,有效負載為藉由會期密鑰 加密之連接資料CDX伺服器 並不解密有效負載,在一實施例中,CDX伺服器 僅傳遞其而不令其改變。
會期密鑰- 此為由用戶端用以加密連接資料 之密鑰。在一實施例中,此密鑰並不為CDX伺服器 所知。在此實施例中,會期密鑰由配對服務產生且連同其個別CDX票證 一起傳輸至用戶端。
CDX票證密鑰- 此為用以產生CDX票證 並對其「簽名」之密鑰。CDX票證 密鑰僅為CDX伺服器 及產生CDX票證 之服務(如下文所描述,其可為配對服務及/或邀請服務)所知。
CDX打孔請求- 特殊類型之CDX請求 ,其用以自CDX伺服器 獲得CDX打孔資料
CDX打孔資料- 此為不透明資料斑點(data blob),其描述CDX伺服器 可如何向最初請求資訊之用戶端發送資訊。其藉由向CDX伺服器 發送CDX打孔請求 來獲得。必須在可產生CDX票證 之前自CDX會期 中之每一用戶端器件收集CDX 打孔資料CDX打孔資料 (有時稱作「NAT周遊資料 」)可包括請求器件之公用IP位址及連接埠。
現轉向圖2a ,在一實施例中,行動器件A 120及行動器件B 121可正執行一共同作業式應用程式(諸如,多玩家遊戲)或一共同作業式聊天會期,其需要與一或多個其他計算器件之P2P連接。在201a處,行動器件A 120向CDX伺服器 110傳輸CDX打孔請求CDX伺服器 110接著在202a處以CDX打孔資料 來回應。在一實施例中,打孔資料包括行動器件A之公用IP位址及連接埠及/或穿過行動器件A之NAT打孔所需的任何其他資料(例如,定義行動器件A之NAT類型之NAT類型資料)。分別在201b及202b處對行動器件B執行類似異動。
在203a及203b處,行動器件A及B接著將包括CDX打孔資料 之匹配請求連同任何額外匹配準則(下文所描述)一起發送至配對服務。在此階段,行動器件A及B可開始建構建立P2P連接所需之連接資料 。此可(例如)使用諸如標準網際網路連線能力建立(「ICE」)異動之異動(例如,藉由NAT周遊服務)來實現。然而,本發明之基礎原理不限於用於判定連接資料之任何特定機制。
在一實施例中,一旦配對服務111藉由匹配準則找到一用戶端器件集合,其便可產生一唯一CDX會期ID 、用於CDX會期 之每一成員之一唯一CDX票證 及一唯一會期密鑰 。在一實施例中,配對服務111可使用唯一CDX票證密鑰 加密用於CDX票證之CDX打孔資料 。在204a及204b處,配對服務接著可接著向行動器件A及B中之每一者發送其CDX票證會期密鑰
行動器件A接收CDX票證會期密鑰 且使用會期密鑰 加密其先前所判定之連接資料 ,從而產生有效負載 。在一實施例中,行動器件A藉由將所建構之有效負載 附加至CDX票證 而建構CDX請求 。在205a處,行動器件A向CDX伺服器 110發送CDX請求 。行動器件B亦可在205b處執行相同操作並向CDX伺服器傳輸請求。
在206a處,CDX伺服器 110接收CDX請求 ,檢查票證以確保該票證為有效的且可信的(例如,基於訊息鑑認碼307)。若CDX票證 為無效的,則丟棄該請求。在一實施例中,CDX伺服器 接著使用CDX票證密鑰 解密CDX票證 中所含有的CDX打孔資料 集合。在一實施例中,CDX票證密鑰 可包括期滿時間/日期,該期滿時間/日期亦可與票證一起傳輸。CDX服務110及配對服務111可儲存兩個(或兩個以上)不同的CDX票證密鑰 以用於加密/解密-該兩個(或兩個以上)不同的CDX票證密鑰 中之第一者當前處於作用中且第二者在到達第一者之期滿時間/日期後便變為處於作用中。在接收到票證後,CDX服務110便可讀取期滿時間/日期以判定使用哪個票證密鑰。當CDX票證密鑰期滿時,CDX服務110與配對服務111兩者可各自產生一新的票證密鑰(其將為在當前票證密鑰期滿之後使用的下一個密鑰)。在一實施例中,CDX服務110及配對服務111執行相同密鑰產生演算法以確保該兩個票證密鑰之一致性。舉例而言,可使用諸如用於熟知RSA SecurID鑑認機制之彼等技術的技術,其中以固定間隔產生新的鑑認碼。在一實施例中,每日產生一新的CDX票證密鑰。然而,本發明之基礎原理不限於用於產生CDX票證密鑰之任何特定機制。
可對行動器件B執行如在206b處所展示之相同操作。CDX伺服器CDX請求 建構CDX回應 且接著使用CDX打孔資料CDX回應 發送至CDX會期 之參與者(在207a處,發送至行動器件B,且在207b處,發送至行動器件A)。
行動器件B接收來自CDX伺服器CDX回應 207a。用戶端器件B檢查CDX票根 以確保會期ID 匹配其自身的CDX票證會期ID 。行動器件B可接著使用會期密鑰 解密有效負載 ,從而獲得來自行動器件A之連接資料 。行動器件B接著使用來自行動器件A之連接資料 開始建立P2P會期之過程。在一實施例中,此等操作涉及標準ICE異動。然而,本發明之基礎原理不限於用於建立P2P通信之任何特定機制。
如上文所敍述,在一實施例中,行動器件A及B建立超文字安全傳送協定(「HTTPS」)會期以與配對服務111通信(例如,使用HTTPS請求/回應異動)且建立UDP通訊端以與CDX服務通信。匹配請求204a、204b可包括先前針對每一各別行動器件所判定的NAT類型及打孔資料(例如,公用IP位址及連接埠)。在涉及多玩家遊戲之一實施例中,每一匹配請求可識別每一行動器件上之玩家(例如,使用唯一玩家ID碼)、每一使用者希望玩之遊戲、參與遊戲之玩家 之數目,及/或與所要遊戲相關聯之其他遊戲組態變數。舉例而言,且並非限制,與遊戲相關聯之遊戲組態變數可包括難度等級(例如,容易、一般、困難)、使用者之年齡(例如,「13歲以下」)、遊戲之子區域(例如,「第2關」),及/或玩家專業等級(例如,專家、初級、中級)。如下文詳細描述,此等變數有時稱作遊戲「桶」且使用唯一「桶ID」來識別。每一遊戲可包括不同的桶ID集合以識別不同的遊戲組態變數。
在一實施例中,行動器件B在208a及209a處發送一應答。類似地,在208b及209b處傳輸行動器件A之應答。若在特定時段之後未接收到行動器件A或B之應答,則可將連接資料207a重新發送至行動器件B 121。CDX服務110可起始再試及/或行動器件A 120可起始再試。
2b 說明三個不同的行動器件120至122使用CDX服務及配對服務111協商P2P連接之更詳細實例。圖2b 亦說明由行動器件120至122使用以建立一連接之兩個額外服務:NAT周遊服務291,其用於判定NAT類型;與NAT周遊服務290,其用於判定每一行動器件之完整連接資料(例如,使用ICE連接資料異動)。然而,請注意,單獨服務無需遵照本發明之基礎原理。舉例而言,在替代實施例中,可將由此等服務290至291中之每一者執行的NAT周遊函式直接整合於CDX服務110及/或配對服務111內。類似地,可將由NAT周遊服務290至291兩者執行之函式整合於一單一NAT周遊服務內。總之,遵照本發明之基礎原理,不需要圖2b 中所展示之特定功能分離。
現轉向圖2b 之特定細節,在220處,行動器件A向NAT周遊服務291傳輸一NAT類型請求。回應於此,NAT周遊服務291可使用各種已知技術(包括實施一系列異動)來判定由行動器件A使用之NAT類型。舉例而言,NAT周遊服務291可試圖開啟行動器件A之NAT上的不同IP位址及連接埠,且使用不同IP/連接埠組合經由彼等連接埠與行動器件A通信。以此方式,可將由行動器件A使用之NAT分類為上文所描述之NAT類型(例如,完整圓錐型(full cone)、受限圓錐型(restricted cone)、連接埠受限圓錐型(port restricted cone)、對稱式)中之一者或一替代NAT類型。可接著將此資訊提供至行動器件A 120,如所說明。
在221處,行動器件A 120起始向CDX服務110之NAT周遊請求。回應於此,CDX服務110可讀取用於該請求之公用IP位址及公用連接埠號碼且將此資訊傳輸回至行動器件A 120。如上文所描述,若器件位於NAT之後,則器件之公用連接埠及IP位址將分別不同於其私有連接埠及IP位址。因此,視所使用之NAT之類型而定,可使用公用IP位址及連接埠來穿過NAT器件「打孔」以到達行動器件。
在222處,行動器件A 120向配對服務111傳輸一匹配請求222。如上文所描述,在一實施例中,行動器件A使用超文字安全傳送協定(「HTTPS」)會期(例如,使用HTTPS請求/回應異動)向配對服務111傳達。匹配請求可包括先前針對行動器件A 120所判定的NAT類型及打孔資料(例如,公用IP位址及連接埠)。在涉及多玩家遊戲之一實施例中,匹配請求可識別行動器件A上之玩家(例如,使用唯一玩家ID碼)、使用者希望玩之遊戲、參與遊戲之玩家之數目,及/或與所要遊戲相關聯之其他遊戲組態變數(如先前關於圖2a 所描述)。
在223至225處,針對行動器件B 121執行對應於異動220至222之一異動集合,且在226至228處,針對行動器件C 122執行對應於異動220至222之一異動集合。因此,在異動228之後,配對服務111已接收到針對所有三個行動器件120至122之匹配請求。在此特定實例中,匹配請求導致行動器件120至122針對一特定共同作業式會期匹配,諸如針對多玩家遊戲(例如,此等行動器件之使用者可選擇具有相同或類似之變數集合的相同遊戲,藉此導致由配對服務111進行之匹配)。
配對服務111使用該等匹配請求中之每一者中所含有的資料來產生票證A(配對服務111在229處將其傳輸至行動器件A);票證B(配對服務111在230處將其傳輸至行動器件B);及票證C(配對服務111在231處將其傳輸至行動器件C)。雖然圖2b 中未展示,但配對服務111可使用推送通知服務來將票證A、B及C分別推送至行動器件A、B及C(例如,諸如圖11至圖12中所說明之推送通知服務1050)。上文關於圖3 描述用於票證A、B及C之票證資料結構之一實施例。
在232處,行動器件A 120與NAT周遊服務290通信以判定其自身的連接資料。在一實施例中,此可包括標準ICE連接資料異動。如先前所敍述,連接資料可包括用於行動器件A 120之公用/私有IP位址、連接埠及NAT類型。
行動器件A 120將其連接資料附加至票證A,且在233處,將具有連接資料之票證A傳輸至CDX服務110。在一實施例中,CDX服務110處理票證A(如上文所描述),且在234處,將連接資料(其可被加密)傳輸至行動器件B 121及行動器件C 122。對於此等異動,CDX服務110可使用與票證A一起包括的用於行動器件B及C之NAT周遊資料。
在236至238處,使用票證B執行對應於異動232至234之一異動集合,且在238至240處,針對票證C執行對應於異動232至234之一異動集合。因此,在異動240之後,連接資料已在行動器件120至122中之每一者之間共用。使用連接資料,在行動器件A與B、行動器件A與C及行動器件B與C之間建立P2P會期。
如圖2c 中所說明,邀請服務112亦可與CDX服務110一起使用(代替配對服務111或除配對服務111之外)。在一實施例中,邀請服務112處理針對與特定行動器件及/或使用者之P2P連接的邀請請求。邀請服務112可實施為一無狀態服務(亦即,並不追蹤無線器件中之每一者之間的異動之當前狀態的服務)。
轉向此特定實例,在250處,行動器件A 120向NAT周遊服務291傳輸一NAT類型請求。回應於此,NAT周遊服務291可使用用於判定由行動器件A使用之NAT類型的各種已 知技術(一些技術已在上文進行描述)。在251處,行動器件A 120起始向CDX服務110之NAT周遊請求。回應於此,CDX服務110可讀取用於該請求之公用IP位址及公用連接埠號碼且將此資訊傳輸回至行動器件A 120。如上文所描述,若器件位於NAT之後,則器件之公用連接埠及IP位址將分別不同於其私有連接埠及IP位址。因此,視所使用之NAT之類型而定,可使用公用IP位址及連接埠來穿過NAT器件「打孔」以到達行動器件。
如同配對服務,在一實施例中,行動器件中之每一者使用超文字安全傳送協定(「HTTPS」)會期(例如,使用HTTPS請求/回應異動)與邀請服務112通信。
在252處,行動器件A 120向邀請服務112傳輸一邀請請求,該邀請請求包括行動器件A之NAT周遊資料(例如,NAT類型、公用IP位址/連接埠)。在使用推送通知服務(下文更詳細描述)之一實施例中,邀請請求亦可包括行動器件A之推送符記。邀請請求252亦可包括識別一或多個其他使用者/器件(在此狀況下,為行動器件B 121及C 122之使用者)之識別碼。可使用各種不同的識別碼類型。舉例而言,在多玩家遊戲之狀況下,識別碼可包含遊戲特有的玩家ID碼。在音訊/視訊聊天會期之狀況下,識別碼可包含識別來自行動器件A之使用者之「夥伴」清單的一或多個使用者的電話號碼或唯一ID碼。
在一實施例中,邀請服務112自邀請請求中讀取識別碼且在註冊資料庫(未圖示)中執行查詢以定位行動器件B及C中之每一者。在一特定實施例中,行動器件B及C中之每一者先前已向推送服務註冊以接收來自邀請服務112之推送通知。因而,在此實施例中,邀請服務112分別在253及254處使用推送通知服務將邀請請求推送至行動器件B 121及行動器件C 122。與推送通知服務有關之額外細節描述於下文(參見(例如)圖11至圖12及相關聯之文字)及上文所引用之推送通知申請案中。
在一實施例中,邀請請求253及254包括圖3中所說明及上文關於圖2a至圖2b 所描述之票證資料結構。具體言之,發送至行動器件B之票證包括識別行動器件A及B之經加密清單,且發送至行動器件C之票證包括識別行動器件A及C之經加密清單。在一實施例中,因為邀請服務112可能仍不具有行動器件B之NAT周遊資料,所以253處之「票證」可包括識別行動器件B之其他資訊。舉例而言,如下文關於使用中繼服務及推送通知服務(參見(例如)圖11至圖12)之實施例所闡述,253處之「票證」可包括用於行動器件A之NAT周遊資料、器件A之ID碼、器件A之推送符記、器件B之ID碼及用於行動器件B之推送符記。可在254處提供用於行動器件A及C的相同類型之資訊。
在255處,行動器件B可與NAT周遊服務291通信以判定其NAT類型,且在256處,行動器件B可與CDX服務110通信以判定其NAT周遊資料(例如,公用IP位址/連接埠)。在257處,行動器件B向邀請服務112傳輸一邀請回應,該邀請回應含有行動器件A及行動器件B之識別碼、NAT周遊資料及用於行動器件A及B之推送符記(若使用推送通知服務)。在258處,行動器件B可藉由與NAT周遊服務290通信而擷取其當前連接資料。在259處,行動器件B將其具有其當前連接資料之票證(票證B)傳輸至CDX服務110。回應於此,CDX服務110處理票證(如上文所描述)且將連接資料轉遞至行動器件A 120。
在接收到行動器件B之邀請回應後,邀請服務112便可在260處產生用於行動器件A之一經加密票證並將票證傳輸至行動器件A。在一實施例中,票證包括用於行動器件A及B之NAT周遊資料、NAT類型及推送符記(若使用推送通知服務)。關於圖2c 所描述之「票證」之資料結構可與關於配對服務111所描述之「票證」之資料結構相同或不同。舉例而言,並非產生經加密「票證」(如上文所描述),而是邀請服務112可僅產生一唯一會期ID以識別與行動器件中之每一者的邀請會期。
在261處,行動器件A藉由與NAT周遊服務290通信而擷取其當前連接資料。行動器件A可接著將其連接資料附加至票證,且在262處,將具有其連接資料之票證傳輸至CDX服務110。CDX服務110處理票證(如上文所描述)且將行動器件A之連接資料轉遞至行動器件B。最後,在263處,行動器件A與B使用所交換之連接資料開啟一直接P2P連接。如下文所描述,在行動器件A與B之NAT類型不相容的狀況下,可使用中繼服務來致能行動器件A與B之間的通信。
在264至272處,行動器件C122及行動器件A可執行一系列異動以建立一P2P連接(如在255至263處針對行動器件B及A所描述)。具體言之,在624處,行動器件C 122與NAT周遊服務291通信以判定其NAT類型,且在265處,與CDX服務110通信以判定其NAT周遊資料(例如,公用IP位址/連接埠)。在266處,行動器件C傳輸一邀請回應,該邀請回應含有行動器件C及行動器件A之NAT類型、NAT周遊資料及推送符記(若使用推送通知服務)。在267處,行動器件C經由NAT周遊P2P服務290擷取其當前連接資料,且在268處,行動器件C將其連接資料附加至票證C並將票證C傳輸至CDX服務110。CDX服務110處理票證(如上文所描述)且將行動器件C之連接資料轉遞至行動器件A 120。
在269處,行動器件A 120接收來自邀請服務112的行動器件C之邀請回應,行動器件C之邀請回應包括行動器件A與C兩者之NAT類型、NAT周遊資料及推送符記(若使用推送服務)。在270處,行動器件A自NAT周遊服務290擷取其當前連接資料,將其當前連接資料附加至票證A,且在271處,將票證A傳輸至CDX服務110。或者,可能不需要異動270,此係因為行動器件在異動261處判定其連接資料。CDX服務110處理票證A(如上文所描述)且將行動器件A之連接資料轉遞至行動器件C。最後,在272處,行動器件A與C使用所交換之連接資料建立一直接P2P連接272。
在一實施例中,邀請服務112及配對服務111可依賴於用於將資料推送至行動器件之推送通知服務(未圖示)。舉例而言,在圖2c 中,可經由推送通知服務將邀請請求253及254推送至行動器件B 121及C 122。類似地,在圖2a 中,可將票證A及B推送至行動器件A 120及B 121。在一實施例中,當在網路上啟動行動器件時,該行動器件將其推送符記在一可藉由推送通知服務存取之中央註冊目錄中註冊。在一實施例中,註冊目錄使一受密碼保護之使用者ID或一電話號碼與一推送符記相關聯。若可在目錄中識別推送符記,則推送通知服務可使用推送符記來將推送通知傳輸至行動器件。在一實施例中,推送通知服務為由本申請案之受讓人設計的並描述(例如)於上文所引用之推送通知申請案中的Apple推送通知服務(「APNS」)。然而,請注意,圖2a圖2c 中所展示的本發明之實施例不需要推送通知服務。舉例而言,CDX服務110不需要推送通知來執行其操作(如本文中所描述)。
圖4 說明可由CDX服務110實施以交換連接資料之方法,且圖5 說明可由行動器件實施以交換連接資料並建立一P2P連接的方法。此等方法之某些態樣已在上文關於圖1 至圖2c 進行描述。詳言之,此等方法可實施於圖1 至圖2c 中所展示之網路架構的內容背景內,但其並不限於此架構。在一實施例中,該等方法以程式碼來體現,該程式碼在由處理器執行時使得執行該等方法之操作。該程式碼可儲存於諸如隨機存取記憶體(「RAM」)之機器可讀媒體中同時由處理器來執行。處理器可為通用處理器(例如,IntelCoreTM 處理器)或專用處理器。然而,該等方法可使用硬體、軟體及韌體之任何組合來實施。另外,該程式碼可儲存於諸如硬磁碟驅動機、光學光碟(例如,數位影音光碟或緊密光碟)之非揮發性儲存器件或諸如快閃記憶體器件之非揮發性記憶體上。
現轉向圖4 中所展示之方法,在401處,接收特定行動器件(在該實例中,為「行動器件A」)之NAT周遊請求(有時亦稱作「打孔」請求)。在402處,產生一NAT周遊回應並將其傳輸至行動器件A。在一實施例中,產生NAT周遊回應可包括判定行動器件A之當前公用IP位址/連接埠及/或NAT類型。
隨後可由一票證產生實體(諸如,上文所描述之配對服務111或邀請服務112)產生並加密行動器件A之票證。在403處,接收所產生的用於行動器件A之票證(「票證A」),用於行動器件A之票證包括NAT周遊資料(用於器件A及一或多個其他器件)及用於器件A之連接資料。在404處,使用訊息鑑認碼鑑認票證,且使用與由票證產生實體用以加密票證之CDX票證密鑰相同的CDX票證密鑰解密打孔資料。如上文所敍述,在一實施例中,使用與CDX票證密鑰相關聯之期滿時間/日期識別正確的CDX票證密鑰。
在405處,提取用於行動器件之NAT周遊資料。在406處,使用NAT周遊資料將用於行動器件A之連接資料傳輸至同級者中之每一者。在407處,接收來自該等同級者中之每一者的應答。若在408處判定未接收到來自所有同級者之應答,則在409處,將行動器件A之連接資料重新傳輸至未作出回應之彼等同級者。當在408處判定所有連接資料已得到應答時,方法終止。
在一實施例中,可針對P2P異動中所涉及之同級者中之每一者執行圖4 中所展示之方法,以確保每一同級者接收到建立一P2P連接所需之連接資料。
圖5 說明根據本文中所描述的本發明之實施例的可由行動器件執行之方法。在501處,傳輸一NAT周遊請求,且在502處,接收一NAT周遊回應。如先前所描述,該回應中所含有的NAT周遊資料可包括請求器件之公用連接埠/IP位址。在503處,傳輸含有NAT周遊資料之匹配請求。隨後可由一票證產生實體(諸如,上文所描述之配對服務111或邀請服務112)產生並加密行動器件之票證。作為上文所描述之票證資料結構之替代,配對服務111及/或邀請服務112可僅使用一唯一會期ID來識別參與者中之每一者。
在504處,可接收票證;在505處,將用於行動器件之連接資料附加至票證;且,在506處,傳輸具有連接資料之票證。在507處,接收建立與一或多個其他同級者之P2P連接所需的連接資料。在508處,接收指示一或多個其他無線器件已接收到在506處所傳輸之連接資料的應答。若未接收到所有應答,則在510處,將連接資料重新傳輸至彼等行動器件(未自其接收到應答)。若在509處判定接收到所有應答,則使用在507處所接收到之連接資料建立與該等其他行動器件之P2P會期。
用於建立及使用備用通信頻道之裝置及方法
當前行動器件能夠經由多種不同通信頻道通信。舉例而言,Apple iPhoneTM 能夠經由以下網路通信:Wi-Fi網路(例如,802.11b,g,n網路);3G網路(例如,通用行動電信系統(「UMTS」)網路、高速上行鏈路封包存取(「HSUPA」)網路等);及藍芽網路(稱為個人區域網路(「PAN」))。未來行動器件將能夠經由額外通信頻道通信,額外通信頻道諸如(僅舉幾個例子)WiMAX、國際行動電信(「IMT」)進階及長期演進(「LTE」)進階。在操作中,當前行動器件自一可用頻道集合當中選擇一主要通信頻道。舉例而言,行動器件常常經組態以在Wi-Fi可用時選擇Wi-Fi連接,且在Wi-Fi不可用時選擇一蜂巢式資料連接(例如,UTMS連接)。
在本發明之一實施例中,一行動器件群組最初使用標準ICE連接資料交換及/或使用上文所描述之連接資料交換技術建立主要同級間(「P2P」)通信頻道。行動器件可接著經由主要頻道交換連接資料以建立一或多個次要通信頻道,該一或多個次要通信頻道在該等主要頻道中之任一者發生故障時用作備用頻道。在一實施例中,經由NAT防火牆藉由經由此等頻道週期性地傳輸「活動信號」封包而將次要通信頻道維持為開啟的。
如本文中所使用,通信「頻道」指代兩個行動器件之間的完整網路路線且通信「鏈路」指代用於通信路線中之一特定連接。舉例而言,若器件A係使用Wi-Fi連接而連接至網際網路且器件B係使用3G連接而連接至網際網路,則器 件A與器件B之間的「頻道」藉由Wi-Fi鏈路與3G鏈路兩者來界定;器件A具有Wi-Fi通信「鏈路」且器件B具有3G通信「鏈路」。因而,若器件A自Wi-Fi鏈路切換至3G鏈路,則儘管事實為器件B之3G鏈路保持相同,但器件A與器件B之間的「頻道」仍改變。
現在將關於圖6 描述行動器件建立主要及次要通信頻道之特定實例。然而,請注意,本發明之基礎原理不限於圖6 中所展示之通信鏈路及通信頻道之特定集合。
在圖6 中,行動器件A 601能夠經由與NAT器件611之通信鏈路605及經由與NAT器件612之通信鏈路606而連接至網路610(例如,網際網路)。類似地,器件C 603能夠經由與NAT器件613之通信鏈路609及經由與NAT器件614之通信鏈路610而連接至網路610。舉例而言,且並非限制,通信鏈路605及609可為3G通信鏈路且通信鏈路606及610可為Wi-Fi通信鏈路。
因此,在此實例中,存在可建立於行動器件A與行動器件B之間的四個不同的通信頻道:使用鏈路605及609之第一頻道;使用鏈路605及610之第二頻道;使用鏈路606及609之第三頻道;及使用鏈路606及610之第四頻道。在一實施例中,行動器件A及B將基於一優先次序排定方案而選擇此等頻道中之一者作為主要通信頻道,且將選擇三個剩餘頻道作為備用通信頻道。舉例而言,一種優先次序排定方案可為選擇具有最高頻寬之頻道作為主要頻道且使用剩餘頻道作為次要頻道。若兩個或兩個以上頻道具有可比較之頻寬,則優先次序排定方案可包括選擇最不昂貴之頻道(假定使用者支付費用以使用該等頻道中之一或多者)。或者,優先次序排定方案可為選擇最不昂貴之頻道作為主要頻道,且在每一頻道之成本相同時,選擇最高頻寬之頻道。可實施各種不同的優先次序排定方案同時仍遵照本發明之基礎原理。
行動器件A 601及C 603可使用上文所描述之技術來建立主要通信頻道(例如,藉由經由CDX服務110交換連接資料)。或者,行動器件601、603可實施標準網際網路連線能力建立(「ICE」)異動以交換連接資料。不管如何建立主要頻道,一旦建立了主要頻道,行動器件A 601與C 603便可經由主要通信頻道交換用於次要通信頻道之連接資料。舉例而言,若圖6 中之主要通信頻道包括通信鏈路606及通信鏈路609,則一旦建立此連接,此連接便可用以交換用於次要通信頻道(包括通信鏈路605及609)之連接資料。在此實例中,經由主要通信頻道而交換之連接資料可包括用於NAT 611及NAT 613之NAT周遊資料及NAT類型資料,包括用於該等行動器件中之每一者的公用及私有IP位址/連接埠。
一旦建立次要通信頻道,便可使用活動信號封包來將次要通信頻道維持為開啟的。舉例而言,器件A可將小的「活動信號」封包週期性地傳輸至器件C及/或器件A可將小的「活動信號」封包週期性地傳輸至器件C,以確保用於次要頻道之NAT連接埠保持開啟(NAT常常歸因於停止使用而關閉連接埠)。活動信號封包可為不具有有效負載之UDP封包,但本發明之基礎原理不限於任何特定封包格式。活動信號封包可為在其有效負載標頭中具有自我識別類型欄位的UDP封包,且可含有選用的額外格式化之資訊,包括(但不限於)頻道存留時間值。
如圖7中所說明,每一行動器件601儲存並維持一含有一主要及次要通信頻道清單之資料結構710(例如,表格、文字檔案、資料庫等)。針對每一通信頻道提供一單獨項且該單獨項包括使用彼頻道所需之連接資料(例如,私有/公用IP位址、NAT類型等),及彼頻道之當前狀態(例如,主要、次要1、次要2等)。
在一實施例中,通信介面701及702分別用於經由通信鏈路605及通信鏈路606通信。故障偵測模組705可執行於行動器件601上以偵測特定通信介面/鏈路何時發生故障或降級至低於一特定臨限值。回應於此,鏈路管理模組706可讀取主要/次要連接資料710以促使具有次高優先級之一次要頻道成為主要頻道。次要頻道之優先次序排定可使用與上文針對主要頻道所論述之彼等原理(例如,基於頻寬、成本、可靠性等)相同的原理來實現。一旦選擇了一次要頻道,鏈路管理模組706便可將一鏈路故障指示傳輸至其他行動器件上之鏈路管理模組,從而指示彼等器件促使該次要通信頻道成為一主要通信頻道。彼等器件將接著開始使用與選定之主要頻道相關聯的連接資料。
在一實施例中,迫使切換至次要通信頻道中之一者不需要主要通信頻道之完全「故障」。舉例而言,在一實施例中,若主要通信頻道充分降級(例如,低於一特定頻寬、位元速率或可靠性臨限值),則可如本文中所描述來實施至一次要頻道之改變。在一實施例中,僅在次要頻道能夠支援比當前主要頻道所能支援之效能較佳的效能(例如,頻寬、位元速率或可靠性)時才執行至次要頻道之切換。
8a 說明與圖6 中所展示之網路組態相同的網路組態,其中添加了直接連接至網路610且經由私有網路連接620而連接至器件C 603之行動器件B 602。私有網路620可為(例如)器件B 602與器件C 603之間的藍芽PAN連接。自此實例可見,自主要頻道至次要頻道之切換可顯著變更網路拓撲。舉例而言,如圖8b 中所展示,若用於行動器件之主要頻道801包括通信鏈路609(導致器件A、B及C之間的直接連接)且次要頻道包括私有網路620,則網路拓撲可如圖8c 中所說明般改變,此係因為器件A與器件C使用私有網路通信之唯一方式係經由器件B。雖然此實例為僅具有三個器件之簡化實例,但可使用顯著較大數目個器件,從而在於主要通信頻道與次要通信頻道之間切換時導致多種不同的網路拓撲組態。
在圖9 中說明用於建立及維持次要頻道之方法之一實施例。在一實施例中,該方法可由每一行動器件上之鏈路管理模組706來執行。然而,該方法不限於任何特定器件組態。
在901處,選擇一主要P2P通信頻道。如上文所敍述,可 基於預定義之優先次序排定方案而選擇主要頻道。舉例而言,可將某些通信頻道類型之優先次序排定在其他通信頻道類型之前。亦可基於諸如頻寬、使用成本及/或可靠性之變數而排定頻道之優先次序。
在902處,建立備用P2P通信頻道。在一實施例中,此係藉由經由主要通信頻道在所有行動器件之間共用連接資料來實現。在903處,維持備用頻道。在一實施例中,此涉及經由次要通信頻道週期性地傳輸資料(例如,以週期性活動信號封包之形式)。
在904處,若主要P2P頻道發生故障(例如,因為特定行動器件之通信鏈路被破壞或行動器件移動至通信鏈路之範圍之外),則在905處,行動器件促使最高優先級之備用頻道成為主要頻道。在一實施例中,此涉及具有發生故障之鏈路的行動器件經由次要頻道向其他器件傳輸其鏈路故障之通知。最後,在906處,使備用頻道成為主要頻道且過程回到902(在902處,發現任何額外的備用頻道且將其添加至優先次序排定方案)。
用於建立同級間(P2P)通信頻道之邀請服務之裝置及方法
如圖10中所說明,除CDX服務110、配對服務111及邀請服務112(其一些實施例在上文進行了描述)之外,本發明之一實施例亦可包括註冊/目錄服務1052、推送通知服務1050及中繼服務1051。如上文所敍述,在一實施例中,邀請服務112及/或配對服務111可使用註冊/目錄服務1052來識別已註冊之行動器件且使用推送通知服務1050來將資料 推送至行動器件。在一實施例中,當在網路上啟動行動器件時,該行動器件藉由使一「推送符記」(在推送通知應用程式中有時稱作「通知服務帳戶識別符」)與一受密碼保護之使用者ID或一電話號碼相關聯而向由註冊/目錄服務1052維持之資料庫註冊該推送符記。若在註冊目錄中識別推送符記(例如,藉由以使用者ID執行一查詢),則推送通知服務1050可使用推送符記來向行動器件傳輸推送通知。在一實施例中,推送通知服務為由本申請案之受讓人設計的並描述(例如)於上文所引用之推送通知申請案中的Apple推送通知服務(「APNS」)。
11 說明使用推送通知服務1050在兩個行動器件之間建立一直接P2P連接的本發明之一實施例,且圖12說明用以經由中繼服務1051建立一P2P連接的一實施例。如下文所描述,關於是否使用中繼服務1051來建立P2P連接的決策可基於在行動器件之間建立一直接P2P連接的可行性(例如,基於NAT相容性問題)。
現轉向圖11 ,在1101處,行動器件A 120傳輸用以邀請行動器件B 121之一邀請以邀請行動器件B進行一P2P通信會期(例如,共同作業式視訊遊戲、P2P視訊聊天等)。在一實施例中,在特定線上應用程式之內容背景內,邀請包括識別行動器件B 121(及/或行動器件B之使用者)的使用者ID碼。舉例而言,使用者ID碼可為用於特定多玩家P2P遊戲之玩家ID且可採用(例如)通用唯一識別符(UUID)之形式。或者,在一些實施例中,ID碼可為行動器件B 121之 電話號碼。遊戲ID碼可用以識別行動器件A正邀請行動器件B加入之多玩家遊戲。桶ID可用以識別彼遊戲之組態(如本文中關於配對服務所描述)。
邀請1101亦可包括識別行動器件A 120之ID碼及與行動器件A相關聯之NAT周遊/連接資料(例如,用於行動器件A之公用/私有IP位址及連接埠及用於器件A之NAT器件的NAT類型)。NAT周遊/連接資料或NAT類型資料可能先前已由行動器件A在邀請請求1101之前判定(例如,經由NAT周遊、NAT類型及連接資料異動,諸如上文關於圖2a 至圖2c 所論述之彼等)。如先前所敍述,邀請請求1101可採用HTTPS請求之形式。另外,為獲得額外安全性,邀請請求1101可包括由預先指定之憑證授權單位簽署的用戶端憑證。
不管用以識別行動器件B之ID碼之特定類型,ID碼均由邀請服務112接收,且在1102處,邀請服務112可在目錄服務1052(圖11 中未圖示)中執行查詢以識別通知服務帳戶識別符,諸如用於將通知推送至行動器件B之推送符記(「推送符記B」)。在一實施例中,查詢操作可執行若干檢查以判定是否應允許邀請。首先,查詢操作可確認用於行動器件A之識別碼(「ID-A」)與器件A之推送符記(「推送符記A」)為目錄服務資料庫內的一已註冊之關聯。查詢操作1102亦可確認准許行動器件A之使用者邀請行動器件B之使用者(例如,行動器件B之使用者可指定僅註冊為B之好友之彼等其他使用者可邀請使用者B;或可指定不准許任何邀請)。在一實施例中,若此等檢查中之任一者失敗,則取消邀請,且邀請服務112將出錯傳回至行動器件A。
雖然在此實施例中描述「推送符記」,但請注意,本發明之基礎原理不限於「推送符記」或用於鑑認通知且將通知推送至行動器件之任何其他特定資料結構的使用。
在一實施例中,在識別推送符記之後,邀請服務112可產生一安全的一次性「會期符記」,將該安全的一次性「會期符記」指派給邀請會期並在所有其他異動中使用該安全的一次性「會期符記」來識別會期。接著將會期符記之複本傳輸回至行動器件A 120並將其與邀請請求一起發送至行動器件B。在一實施例中,將會期符記連同上文所描述之票證資料結構一起使用,且在另一實施例中,僅使用會期符記。
在1103處,邀請服務112向推送通知服務1050傳輸一推送請求。在一實施例中,推送請求可包括用於行動器件A之NAT周遊資料、器件A之ID碼、推送符記A、器件B之ID碼及推送符記B。在一實施例中,可將此資訊封裝於「票證」資料結構內並如上文所描述般加密。在另一實施例中,僅傳輸資料與邀請會期ID。
因為此實例中之行動器件B 121已向推送通知服務1050註冊,所以推送通知服務1050能夠在1104處定位邀請請求並將邀請請求推送至行動器件B 121。所推送之邀請1104可包括會期符記、行動器件A之NAT周遊資料/連接資料,及行動器件B之ID碼。回應於邀請請求,行動器件B可藉由向NAT周遊服務或CDX服務110(如上文所描述)進行呼叫而判定其網路連接資訊(例如,NAT周遊/連接資料、NAT類型等)。
在1105處,行動器件B接受邀請。接受1105可採用至邀請服務112之HTTPS呼叫之形式且可包括由預先指定之憑證授權單位簽署之用戶端憑證(上文關於邀請請求所敍述)。在一實施例中,接受1105可包括用於行動器件A及B之ID碼,及用於行動器件A及B之NAT周遊/連接資料及/或NAT類型。接受1105亦可包括用於行動器件A及B之推送符記及/或會期符記。在一實施例中,接受1105亦可含有關於其是否為來自先前失敗之直接連接嘗試的再試的指示。然而,在另一實施例中,接受1105並不含有再試指示。實情為,在偵測到失敗之P2P連接嘗試後,該兩個行動器件中之一者便可向邀請服務112傳輸一特定「中繼邀請」。回應於此,該服務可直接起始下文關於圖12 所描述之中繼異動系列(以1201開始)。
在1106處,邀請服務112可執行相容性檢查以判定行動器件A與B之間的直接P2P連接是否可行。舉例而言,在一實施例中,若自行動器件B所接收之接受1105指示其為來自先前失敗之直接連接嘗試的再試(或特定數目次先前失敗之直接連接嘗試),則邀請服務可推斷出:直接P2P連接不可行。邀請服務112可比較用於行動器件A與B之NAT類型資料以判定行動器件A與B之NAT器件是否將支援直接P2P連接。關於建立P2P連接,已知NAT類型之某些組合不相容。舉例而言,完整圓錐型NAT可與任何其他NAT類型(除了封閉型/防火牆型NAT之外)一起使用以建立直接P2P連接。相反,對稱式NAT僅可與完整圓錐型NAT一起使用以建立直接P2P連接。在本發明之一實施例中組合各種NAT類型之可行性闡述於圖14 中所展示之NAT相容性圖表1400中,其中行表示一行動器件(例如,行動器件A)之NAT類型且列表示另一行動器件(例如,行動器件B)之NAT類型。單元格中之「1.0」指示相關聯之列及行中之NAT類型相容且「0.0」指示該等NAT類型不相容。
在一實施例中,若相容性檢查1106判定直接P2P連接不可行,則邀請服務112可傳輸一中繼查詢請求1201(如下文關於圖12 所描述)。然而,若相容性檢查1106判定直接P2P連接可行,則邀請服務112可向推送通知服務1050傳輸一推送請求1107,推送請求1107含有行動器件B對行動器件A之邀請的接受。推送請求1107及自推送通知服務1050至行動器件A之後續推送通信1108可包括會期符記及行動器件A與B兩者之推送符記、ID碼,及/或NAT周遊/連接資料。在一實施例中,可將此資訊封裝於上文所描述之「票證」資料結構內(參見(例如)圖2a 至圖2c 及相關聯之文字)且可使用唯一密鑰進行加密。或者,可僅將此資訊與唯一邀請會期ID一起傳輸。邀請服務1050亦可通知行動器件B將嘗試一直接連接。
在此階段,行動器件A及B具有足以建立直接P2P連接之資訊。在一實施例中,此係使用如上文所描述之CDX服務110來實現。舉例而言,行動器件B將其連接資料附加至票證B,且在1109處,將票證B(具有連接資料)傳輸至CDX服務。恰好在此異動之前,行動器件B可實施諸如異動235(圖2b 中所展示)之異動以便確保其連接資料為當前的。CDX服務110接著在1110處鑑認票證(例如,使用如上文所描述之唯一會期密鑰),提取行動器件B之連接資料,且將連接資料轉遞至行動器件A。類似地,行動器件A將其連接資料附加至票證A,且在1111處,將票證A(具有連接資料)傳輸至CDX服務110。恰好在此異動之前,行動器件A可實施諸如異動232(圖2b 中所展示)之異動以便確保其連接資料為當前的。CDX服務110接著在1112處鑑認票證(例如,使用如上文所描述之唯一會期密鑰),提取行動器件A之連接資料,且將連接資料轉遞至行動器件B。最後,在1113處,行動器件A與B使用所交換之連接資料來進入一直接P2P連接。
現轉向圖12 ,若相容性檢查1106判定直接P2P連接不可行,則邀請服務112可向中繼服務1051傳輸一中繼查詢請求1201以判定將由每一行動器件使用之中繼主機。請求1201可含有用於行動器件A及B之網路連接資訊(例如,NAT周遊/連接資料及/或NAT類型資料),該網路連接資訊由中繼服務1051使用以選擇用於該兩個行動器件之適當中繼主機。如圖13 中所說明,中繼服務1051之一實施例包括複數個中繼主機1302至1303及一中繼主機資料庫1301,中繼主機資料庫1301含有與該等中繼主機中之每一者有關的網路資訊。邀請服務112向中繼查詢服務1300傳輸一中繼查詢請求1201,中繼查詢服務1300使用用於行動器件A及B之網路資訊對中繼主機資料庫1301進行查詢。在接收到資料庫結果後,中繼查詢服務1300便提供一識別選定之中繼主機1302至1303之回應1202。
在一實施例中,中繼查詢回應1202含有由中繼服務產生之中繼符記,及將由行動器件A及B使用以用於中繼連接的中繼主機1302至1303之網路位址(IP位址/連接埠)。在一實施例中,中繼符記與中繼會期相關聯且由中繼主機1302至1303使用以在連接至中繼服務1051後便鑑認行動器件A及B。符記可呈現各種形式,包括(例如)唯一ID中繼會期ID碼、數位憑證及/或與中繼會期相關聯之唯一加密密鑰。
在1203處,邀請服務將含有將進行一中繼連接之指示的中繼回應1203傳輸至行動器件B 121。在一實施例中,中繼回應1203可包括中繼符記及用於中繼主機B 1303之網路資訊。在一實施例中,可將回應1203直接發送至行動器件B(繞過推送通知服務1050),此係因為回應1203係回應於行動器件B之接受1105而發送。
邀請服務112將中繼回應1204傳輸至行動器件A,中繼回應1204可包括中繼符記及用於中繼主機B 1303之網路資訊。在此例子中,在異動1205處經由推送通知服務1050將回應1204推送至行動器件A。
在1206處,行動器件A 120使用用於中繼主機A 1302之網路資訊建立與中繼服務1051之連接。類似地,在1207處,行動器件B 121使用用於中繼主機B 1303之網路資訊建立與中繼服務1051之連接。在此等異動中之每一者中,在行動器件A及B之任何NAT防火牆中開啟新孔,且可由中繼服務1051判定用於行動器件A及B之NAT周遊/連接資料並將其分別傳回至行動器件A及B(例如,藉由判定用於器件之公用IP/連接埠)。在一實施例中,中繼服務1051及行動器件A及B實施使用中繼周遊NAT(「TURN」)協定,如熟習此項技術者所理解,該協定允許位於NAT或防火牆之後的元件經由TCP或UDP連接接收傳入之資料。
在1208處,行動器件A將中繼更新傳輸至邀請服務112,在1209處,中繼更新被轉遞至推送通知服務,且在1210處,中繼更新被推送至行動器件B。類似地,在1211處,行動器件B將中繼更新傳輸至邀請服務112,在1212處,中繼更新被轉遞至推送通知服務,且在1213處,中繼更新被推送至行動器件A。由行動器件A傳輸之中繼更新可包括會期符記、每一器件之ID碼及由中繼服務在1206及1207處判定之NAT周遊/連接資料(亦即,行動器件A將其NAT周遊/連接資料發送至行動器件B且行動器件B將其NAT周遊/連接資料發送至行動器件A)。在一實施例中,執行中繼更新操作,此係因為每一行動器件之NAT資訊可改變。
最後,在1214及1215處,行動器件A及B分別經由中繼服務1051建立P2P連接。在一實施例中,在行動器件A將行動器件B之NAT周遊/連接資料發送至中繼服務1051且行動器件B將行動器件A之NAT周遊/連接資料發送至中繼服務1051時,可建立中繼連接,藉此允許中繼服務判定至每一同級者之中繼主機1302至1303的正確路線。
使用上文所描述之技術,可將邀請服務112實施為固有地具有可擴充性及彈性之無狀態服務,甚至在具有大量行動器件之大規模系統中亦如此。舉例而言,因為推送通知服務1050固有地能夠定位內容及將內容推送至已註冊之行動器件,所以不需要邀請服務追蹤每一器件之當前位置。另外,因為器件可藉由每一請求及回應傳輸整個會期狀態資料,所以根本不需要邀請服務維持任何每連接狀態資訊,藉此降低邀請服務之儲存及處理要求。此實施特別可用於大規模系統中。
用於令使用者匹配以進行線上會期的系統及方法
圖15 中所說明,配對服務111之一實施例可包括配對調度器1501,其用於接收匹配請求且將匹配回應推送至行動器件120至122;資料庫1512,其用於將匹配請求儲存於請求表1502中且用於將可匹配集合資料儲存於可匹配集合識別符(「MSI」)表1503中;及一或多個配對器1510,其用於自資料庫1512獲取匹配請求,執行匹配操作,且將匹配結果儲存回至資料庫1512中。然而,請注意,本發明之基礎原理不限於圖15 中所展示之特定架構。
在一實施例中,配對調度器1501充當至配對服務111之介面,其接收來自行動器件120至122之請求,將彼等請求轉譯成命令以將該等請求儲存於資料庫1512中,自資料庫1512中讀取匹配結果,且轉譯彼等結果並將彼等結果傳達給行動器件120至122。
在操作中,當新的匹配請求到達時,配對調度器1501可將請求儲存於請求表1502之一列內。在一實施例中,調度器1501為每一匹配請求指派一請求ID(「RID」)碼,在圖15 中將該等請求ID碼簡單地說明為「A」、「B」及「C」(分別對應於行動器件A、B及C)。雖然為了簡單起見在圖15 中使用字母符號表示來展示,但RID碼可為字串、整數或適合於追蹤資料庫內之匹配請求的任何其他變數類型。
可為每一匹配請求指派儲存於請求表1502中之一可匹配集合識別符(「MSI」)值。在一實施例中,MSI可識別正針對其請求匹配之特定應用程式及/或將用於彼應用程式之組態參數。舉例而言,12:4之MSI值可識別具有識別符「12」之特定多玩家遊戲,且可識別該遊戲的具有識別符「4」之特定組態。更具體言之,ID碼12可識別特定多玩家競賽遊戲且ID碼4可指定針對該競賽遊戲之特定競賽軌道、速度或玩家經驗等級。在一實施例中,為應用程式開發者提供以此方式使用MSI值指定任何應用程式組態參數之選項。在一實施例中,並非直接指定MSI,而是,應用程式開發者指定一遊戲ID(以識別一特定遊戲)及一桶ID(以識別一特定遊戲組態)且由配對調度器1501將此等值映射至一MSI值。
另外,若干不同的MSI值可用於一單一MSI內以指定多個不同組態參數(例如,12:4:1可能表示:12=競賽遊戲;4=軌道;且1=經驗等級)。如下文詳細描述,在一實施例中,每一MSI由一配對器1510使用以識別一匹配請求集合,可在該匹配請求集合中執行配對操作(例如,基於MSI而將請求分群且在每一MSI群組內執行匹配)。在一實施例中,可由調度器來動態地修改/選擇每一MSI以包括一識別不同機器分割區之分割區ID。舉例而言,若一特定MSI變成超載,則調度器可在兩個或兩個以上不同伺服器及/或儲存分割區之間分裂該MSI(例如,使用諸如4:3:1及4:3:2之符號表示,其中最後的數字分別識別分割區1及2)。一不同的配對器可接著自來自不同伺服器中之每一者的不同MSI中之每一者中獨立地擷取請求並處理該等請求。
圖15 中所說明,亦可將針對每一請求之匹配請求資料儲存於請求表1502內。請求資料可包括可用於再現配對決策之任何資料及/或經由網路存取起始該請求之行動器件所需的任何資料。舉例而言,在一實施例中,用於每一請求之匹配請求資料包括用於起始請求之行動器件的NAT類型資料及/或NAT周遊/連接資料。亦可將其他類型之請求資料儲存於請求表1502內,諸如,器件連接速度(100 kbps、1 Mbps等)、連接類型(例如,3G、EDGE、WiFi等)、器件位置(例如,藉由地理位置技術判定)、語言(英語、西班牙語等)及/或使用者偏好。請求資料可由每一行動器件120至122來判定且與每一匹配請求一起傳輸至配對調度器1501。舉例而言,每一行動器件可使用各種技術來判定其連接資料、連接類型、器件位置等,一些技術在本文中進行了描述(例如,與NAT周遊伺服器通信以判定NAT周遊/連接資料、使用GPS判定器件位置、讀取HTTP資訊以判定語言等)。
如圖15 中所說明,在一實施例中,可為每一作用中MSI指派MSI表1503中之一列。在一實施例中,當新請求到達時,除將該請求添加至請求表1502之外,調度器1501亦檢查MSI表1503以判定是否已經存在用於彼請求之MSI(亦即,是否已接收到具有相同MSI之其他請求)。若未找到匹配之MSI,則調度器1501可在MSI表1503中產生用於該新請求之一新項。若找到匹配之MSI,則調度器可僅將新請求添加至請求表1502(如上文所描述)。
一旦配對調度器1501更新了請求表1502及MSI表1503,配對模組1510(在下文中簡稱作「配對器1510」)之一執行個體便獲取資料以執行配對操作。可同時執行多個配對器執行個體以執行配對請求且單一配對器1510可同時處理對多個不同MSI群組之多個配對操作。
在一實施例中,當配對器1510變得可用時(例如,在完成針對一MSI群組之匹配操作之後或在初始化之後),其查詢MSI表1503以識別一新的MSI以進行處理。在圖15 中,針對MSI 3:1的配對器ID欄位中之「N/A」值指示處理此MSI之責任尚未指派給配對器。在一實施例中,為每一MSI項壓印時間戳記且配對器1510選擇具有最早時間戳記之MSI。
在一實施例中,當配對器1510承擔對特定MSI之責任時,其更新其在MSI表1503中之配對器ID碼且指定用於彼MSI之租期持續時間(例如,5秒)。在一實施例中,配對器1510在處理用於彼MSI之匹配時連續地更新租期值。可使用租期值來識別指派給失敗之配對器1510之MSI。舉例而言,若租期值期滿,則儘管事實為MSI表1503指示已將MSI指派給配對器,但新的配對器仍可主張對彼MSI之所有權。
一旦配對器1510承擔了對一MSI之責任,其便可查詢請求表1502以將與彼MSI相關聯之請求讀入至記憶體中。配對器1510可接著根據一匹配準則集合(例如,如下文所描述)執行匹配操作以令使用者及行動器件匹配。配對器1510可更新請求表1512以指示何時作出行動器件之匹配。舉例而言,配對器可自請求表1512中之MSI行中移除MSI值且鍵入一預定義值以指示該匹配已完成。另外,配對器1510可更新每一參與者之「請求資料」欄位以識別與彼參與者匹配之其他參與者(例如,藉由寫入與其他參與者通信所需之NAT周遊/連接資料)。
調度器1501可週期性地查詢請求表1502以識別完成之匹配。回應於偵測到完成之匹配,調度器1501可向該匹配中所涉及之行動器件傳輸一推送通知(例如,使用本文中及同在申請中之申請案中所描述的推送通知技術)。在一實施例中,推送通知包括上文所描述之「票證」資料結構。行動器件可接著使用其票證中之每一者經由CDX服務110交換連接資料(如上文所描述)。
除使用推送通知之外,在一實施例中,行動器件120至122亦可週期性地查詢調度器1501以判定是否作出匹配。週期性查詢可用於尚未作出針對行動器件之推送通知的狀況下。然而,因為使用推送架構,所以可將週期性查詢設定至一相對較低速率,藉此減少配對服務111上之負載。
16 說明藉由配對服務111使兩個行動器件A與B匹配之方法的例示性實施例。圖17a 至圖17d 說明可隨著方法進行而發生的對請求表1502及MSI表1503之例示性更新。
在1601處,自行動器件A接收匹配請求。在1602處,將行動器件A之請求鍵入於請求表中且將新的MSI項(MSI 1:1)鍵入於MSI表中(若MSI項尚不存在),如圖17a 中所說明。在1603處,自行動器件B接收匹配請求,且在1604處,將行動器件B之匹配請求亦鍵入於請求表中,如圖17b 中所說明。
在1605處,特定配對器執行個體(配對器第N者)檢查MSI表且偵測到MSI 1:1尚未被另一配對器執行個體主張。或者,配對器可偵測具有期滿之租期的MSI表項,該期滿之租期指示先前工作於MSI上之配對器失敗。在一實施例中,對具有期滿之租期的MSI項給予比新的MSI項(尚未給其指派配對器)高之優先級。另外,在一實施例中,可對相對較早之MSI項給予比相對較新之MSI項高的優先級。不管配對器如何選擇MSI,在配對器選擇MSI時,其均添加其識別符且設定用於該MSI項之一新的租期值,如圖17c 中所說明(例如,在所說明之實例中使用5秒之租期值)。配對器可接著查詢請求表且將具有彼MSI之請求表項讀入至記憶體中,以使得可對其進行處理。
在1606處,配對器執行一系列匹配操作以選擇用於該等請求中之每一者的適當匹配。匹配操作之某些實施例在下文關於圖18 進行描述。簡言之,在一實施例中,經評估以判定「適當」匹配之變數包括NAT類型(例如,完整圓錐型、連接埠受限、對稱式等)、連接類型(例如,WiFi、3G、Edge等)、與使用者相關聯之語言(自HTTP請求接受語言標頭導出),及該等匹配請求中之每一者的存留期。大體而言,配對器1510可試圖使具有相容NAT類型(但有時可如下文所描述般使用中繼服務)、相同連接類型及相同語言之行動器件匹配。在一實施例中,配對器1510可基於匹配請求之存留期而對匹配要求更寬鬆(亦即,請求愈久,將應用之匹配約束愈寬鬆)。
返回圖16 ,在1607處,在匹配決策之後,配對器1510可更新請求表以指示匹配完成,如圖17d 中所指示。作為更新之部分,配對器亦可更新用於行動器件A及B之請求資料。舉例而言,在一實施例中,配對器1510將行動器件B之NAT周遊/連接資料寫入於用於行動器件A之請求資料行中且將行動器件A之NAT周遊/連接資料寫入於用於行動器件B之請求行中。
在1608處,調度器1501可讀一遍請求表以識別已匹配之請求項。在一實施例中,當偵測到行動器件A與B已匹配時,調度器1501讀取請求資料(由配對器更新的,如上文所描述),且產生用於行動器件A及B之通知。在一實施例中,該通知為上文所描述之「票證」資料結構,該「票證」資料結構被加密且包括用於每一行動器件之NAT周遊/連接資料。如先前所描述,在一實施例中,使用推送通知服務1050將通知推送至行動器件A及B。另外,行動器件A及B可週期性地輪詢調度器1501以判定是否已作出匹配。在此實施例中,可以相對較慢之速率進行輪詢技術以識別由於某種原因而未成功推送至該等行動器件中之一者的匹配。使用推送通知管理輪詢請求負載顯著地減少配對服務111上之負載,配對服務111上之負載本該由來自行動器件之輪詢請求載入。
若在1608處判定針對相同MSI之額外匹配請求正在待決,則配對器可繼續使MSI內之行動器件/使用者匹配。在1610處,配對器可重設MSI表1503內之租期值。在1611處,執行額外匹配且更新請求表(如上文所描述)。在1612處,自請求表中讀取額外匹配且更新額外行動器件(如上文所描述)。若無針對MSI之額外匹配請求正在待決,則在1609處,自MSI表中移除MSI項(例如,經由來自調度器及/或配對器之刪除命令)。
18 說明用於在行動器件/使用者之間執行匹配(圖16 中之操作1606)之方法的一實施例。在1801處,成對地配置所有當前MSI請求(例如,針對特定應用程式/桶組合)。在1802處,評估每一對之間的匹配「適合度」,且在1803處,藉由遞減適合度而將該等對排序。基於複數個不同變數來評估「適合度」,該等不同變數包括(但不限於)NAT類型(例如,完整圓錐型、連接埠受限、對稱式等)、連接類型(例如,WiFi、3G、Edge等)、與使用者相關聯之語言(自HTTP請求接受語言標頭導出),及匹配請求中之每一者的存留期。可作為配對決策中之考慮因素的其他變數包括行動器件中之每一者的位置(例如,藉由嘗試使處於特定位置之使用者匹配);最少及/或最多玩家要求(例如,由使用者及/或應用程式指定);包括於MSI中之使用者中之一或多者是否為「好友」或先前已進入一P2P連接(例如,偏好使「好友」或先前之熟人匹配);及使用者對應用程式之經驗(例如,針對多玩家遊戲,使用者中之每一者之排行榜排名可作為考慮因素,偏好為使具有類似經驗之使用者匹配)。
如下表A中所指示,在一實施例中,「適合度」之評估為介於0.0與1.0之間的數值。使用浮點值允許對每一準則之適合度進行正規化。為了避免浮動算術,可使用非正規化之整數值與合適之評估,以使得可比較適合度值。
在一實施例中,所有準則具有二進位適合度,其中該等準則相容(具有正規化值1.0)或不相容(具有小於1.0之正規化值)。可將此等準則視為適合度可隨著存留期而改變的所需準則(如下文所描述)。若將位置添加為一變數,則最佳適合度可為與匹配所需準則之最近玩家的適合度。
在一實施例中,適合度等於針對上述準則中之每一者的(正規化權重*存留期因素值)的總和。存留期因素值可以值1開始且在經過預定時段之後增加。存留期因素值可接著隨著經過更多時間而繼續增加(例如,週期性地增加特定量)。在一實施例中,並非使用上文所描述之存留期因素值,而是可確定存留期臨限值,如下文所描述。可在高於某些存留期臨限值時應用某些變數(諸如,連接類型及語言)之正規化/加權值(即使其並不匹配)。
在一實施例中,在一對請求A與B之間的「適合度」為A與B及B與A之適合度的平均值。此外,可基於A之存留期而調整針對每一因素的A與B之適合度(且反之亦然)。在一實施例中,一相容匹配可能需要1.0之適合度。此意謂A與B將僅在以下情況下匹配:在NAT相容性、連接類型及語言匹配時(導致正規化值1.0),或在A及/或B存留期較長以致實際上忽略上述變數中之一些變數(例如,連接類型及語言)時(使用高於或低於臨限值之存留期因素值)。
可如上表B中所闡述般確定存留期臨限值。隨著每一存留期臨限值經過(亦即,隨著請求變得比特定臨限值久),存留期因素值可增加至接連之較大值(例如,1.5、2.0等)。另外或其他,隨著不同存留期臨限值經過,可將用於某些變數之加權值添加至匹配決策(例如,諸如連接類型及語言,如下文所描述)。
在一實施例中,根據用於給定MSI之匹配流動速率調整表B中所指定之請求存留期極限。在一實施例中,將流動速率指定為在每特定單位時間(例如,每10秒、每分鐘等)內所執行的匹配之數目。因此,流動速率提供關於一特定MSI集合忙碌之程度的指示。在一實施例中,該集合愈忙碌,可設定於上表B中的上述臨限值中之每一者愈低,以增加較早成功匹配之機率且減少配對器上之負載。此外,可將針對給定MSI集合之負載提供給終端使用者(例如,以至匹配值的估計時間的形式),以使得終端使用者可選擇是否試圖加入一特別忙碌之多玩家遊戲中。可以推送通知之形式將負載值提供給使用者。
現轉向來自表A之變數中之每一者,在一實施例中,自圖14 中所展示之NAT相容性圖表1400判定NAT相容性。若基於此圖表而判定兩個NAT相容,則可應用NAT相容性權重。
可使用諸如上文展示為表C之圖表的圖表來評估連接類型。在此實例中,若器件A與B之連接類型相同(如藉由滿足相同連接類型之單元格中的1.0指示),則可在適合度判定中包括來自表A的加權之連接類型值。如上文所敍述,可使用請求中之每一者的存留期來影響連接類型判定。舉例而言,在一實施例中,針對臨限值1、臨限值2及臨限值3處的存留期使用表C中之矩陣來選擇用於連接類型之適合度值。對於處於臨限值4或高於臨限值4之存留期,可將連接類型設定至1.0(甚至對於不匹配之連接類型亦如此)且可應用對應的加權之連接類型值。雖然在一些實施例中使用連接「類型」,但可判定連接速度 且可將連接速度 與連接類型一起使用或使用連接速度 代替連接類型。舉例而言,可將在某些特定範圍內之連接速度視為「相容的」(例如,0至100 kbps;100至500 kbps;500至1000 kbps、1000至1500 kbps等)。亦可將本文中所論述之匹配變數中之任一者作為權重應用於匹配適合度計算且如上文所描述對其進行存留。
在一實施例中,可自HTTP請求接受語言標頭導出玩家語言,該標頭可含有具有偏好品質因數之一或多個語言。調度器可提取最佳語言並將此資訊傳遞給配對器。在一實施例中,在語言相同時,將來自表A的加權之語言值設定至1.0,或在語言不相同時,將來自表A的加權之語言值設定至0.0。然而,在一實施例中,若存留期高於特定臨限值(例如,若存留期處於表B中之臨限值2或高於臨限值2),則即使語言不相同,亦可應用加權之語言值。
在一實施例中,可在具有不相容之NAT類型的兩個使用者之間作出匹配。舉例而言,若配對器在針對一特定MSI令使用者匹配中具有困難,則在特定時段之後,配對器可使用上文所描述之技術經由中繼服務1051來導引連接。以此方式,中繼服務1051充當壓力閥,從而允許發生存留期長之匹配,而不管不相容之NAT類型。亦可回應於偵測到一或多個失敗之匹配嘗試而使用中繼服務1051。在此實施例中,由行動器件提交之每一匹配請求可包括關於先前是否嘗試過一或多個不成功之匹配的指示。
可評估各種額外匹配準則且可為其提供一加權值(作為匹配適合度判定之部分),匹配適合度判定包括(舉例而言且並非限制)關於請求匹配之使用者中之任一者是否為好友的指示。舉例而言,配對器1510可試圖藉由將「好友」權重應用於匹配適合度計算而使為好友之使用者的任何請求匹配。類似地,亦可對好友之好友加權(例如,藉由2或更大之分離度)。另外,一玩家可針對一特定遊戲評定其他玩家之等級且配對器可在執行匹配時評估彼等分級(趨勢為:令使用者與具有相對較高分級之彼等玩家匹配且不令使用者與具有低分級之玩家匹配)。此外,可評估(例如,使用簡單乒操作)使用者之連接的潛時且將其用作配對決策之部分。
用以使玩家匹配之又一變數可為器件類型。舉例而言,配對器1510可試圖使具有類似器件類型(例如,iPad、iPod、iTouch、iPhone、RIM Blackberries等)之玩家匹配。額外變數可包括可針對匹配判定類似地評估的使用者之排行榜排名、當前位置、當前住宅、年齡、性別及類似遊戲集合(亦即,在許多狀況下傾向於促成具有類似準則之彼等使用者之間的匹配)。最後,可由配對器1510來評估家長控制以確保使用者僅與適當MSI匹配及與相同年齡之其他使用者匹配。
配對服務111可自資料服務100內受管理之一或多個資料庫(參見(例如)下文關於圖19 所描述之資料庫1920)中擷取上述變數中之任一者。舉例而言,可自好友服務資料庫中存取使用者之好友資料且可自一或多個其他資料庫(例如,使用者設定檔、遊戲資料庫、排行榜資料庫等)中存取其他資訊(諸如,每一使用者之年齡、性別、遊戲集合等)。在一實施例中,藉由存取用於儲存用於作出配對決策之所有各種不同類型之使用者/器件資料的相同中央資料庫(或資料庫群組)來提供本文中所描述之所有服務。
雖然上文提供若干特定實例,但應瞭解,本發明之基礎原理不限於用於判定一匹配之適合度程度的任何特定變數集合。在一實施例中,設計待於本文中所描述之系統及方法上執行之應用程式的應用程式設計師可指定其自身的用於使用不同MSI準則匹配及/或用於將請求分群之準則集合。
轉回至圖18 之方法,一旦判定每一對之間的匹配「適合度」,便在1803處,藉由遞減適合度而將該等對排序(例如,具有最高適合度之對位於清單之頂部處)。在1804處,對「匹配集合」編排種子成員(seed)以具有高於特定臨限值之最高適合度值的彼等對。如上文所描述,可將「臨限值」值設定至上文在表A中所展示的正規化值1.0。在1805處,將新的預期拍檔添加至匹配集合,該等新的預期拍檔具有與匹配集合中之當前成員中之一者或所有者的高於特定臨限值之適合度值。舉例而言,若匹配集合最初編排種子成員有A及B,則在A與C及/或B與C之適合度值高於特定臨限值時可將C添加至匹配集合。在一實施例中,若僅單一匹配適合度高於一預期參與方之臨限值,則可將彼參與方添加至匹配集合(亦即,因為(必要時)彼參與方將能夠經由具有與之合適之匹配適合度的一個參與方向所有參與方通信)。一旦將一或多個新的參與方添加至匹配集合,若在1806處判定已滿足匹配之大小要求,則在1807處儲存匹配結果並報告匹配結果(例如,藉由更新請求表1502並傳輸通知,如上文所描述)。在一實施例中,一單一匹配請求可表示多個使用者(例如,當匹配請求遵循一邀請序列時,如下文所描述)。在此狀況下,基於由每一匹配請求表示的使用者之數目而評估大小要求。若未滿足大小要求,則過程返回至1805且將一新的參與方(亦即,具有與集合中之當前成員中之一或多者的高於特定臨限值的匹配適合度的參與方)添加至匹配集合。
在1808處,自正由配對器1510處理之當前請求集合中移除經匹配之請求。在1809處,選擇下一個被編排種子成員之匹配集合且過程返回至1804以用於進行額外匹配。雖然在圖18 中說明為一順序之過程,但請注意,可同時處理多個被編排種子成員之匹配集合同時仍遵照本發明之基礎原理。
雖然上文描述為分離的服務,但配對服務111與邀請服務112可一起操作以連接P2P使用者。舉例而言,在一實施例中,第一使用者可邀請一或多個好友進行線上會期且請求與一或多個額外使用者之匹配(例如,針對一多玩家視訊遊戲邀請好友「Bob」且匹配3個額外玩家)。在此狀況下,邀請服務112最初可處理第一使用者之邀請請求以連接第一使用者與第一使用者之好友。可接著將邀請請求之結果(例如,成功的P2P連接)報告回至使用者之行動器件。配對服務111可接著接收來自第一使用者之行動器件(或,在一實施例中,直接來自邀請服務或來自第一使用者之好友)的請求額外玩家之匹配請求。回應於此,配對服務111可使第一使用者與具有與第一使用者之請求相同的MSI的一或多個其他匹配請求匹配(如上文所描述)。匹配請求可僅包括第一使用者之匹配準則或可包括第一使用者及第一使用者之好友的匹配準則(例如,NAT類型、連接類型、語言、位置等)。在一實施例中,若第一使用者之好友中之一或多者無法建立與另一經匹配之使用者的一直接P2P連接,則可經由第一使用者之資料處理器件(例如,使用第一使用者之行動器件作為連接之代理伺服器)建立經匹配之使用者與第一使用者之好友的連接,及/或可使用中繼服務來連接使用者(如上文所描述)。
在一實施例中,最初可藉由配對服務(如上文所描述)使第一使用者與一或多個使用者匹配且接著第一使用者可邀請一或多個好友加入與第一使用者及經匹配之使用者的線上會期。在此實施例中,可經由邀請服務(如上文所描述)與所邀請之使用者交換使用者之資訊與經匹配之使用者之資訊(例如,NAT/連接資料、使用者ID、推送符記等)。本發明之基礎原理保持相同,而不管是首先發生匹配繼之以邀請,抑或首先發生邀請繼之以匹配。
具有用於共同作業式線上應用程式之應用程式設計介面的應用程式框架
如圖19 中所說明,本發明之一實施例實施於行動器件120具有預定義之軟體框架1912之內容背景內,預定義之軟體框架1912具有用於與一或多個應用程式1911介接之應用程式設計介面(「API」)1910及用於與複數個網路服務1901至1903通信之服務側API 1913。如圖19 中所展示,網路服務1901至1903可由同一線上資料服務100來設計及/或管理(但此組態並非所要求的)。應用程式1911(諸如,P2P遊戲應用程式及其他類型之共同作業式線上應用程式)可 經設計以藉由向API 1910發出呼叫而經由API 1910存取網路服務1901至1903。可使用由框架1912及網路服務1901至1903之開發者提供之軟體開發套件(「SDK」)來促進應用程式1911之設計。下文關於圖20 描述框架1912及API 1910、API 1913之更特定實施。
如所說明,該等服務中之每一者可具備存取用於儲存由該等服務使用之資料之資料庫1920的權利。一特定實例為由配對服務111使用之資料庫1512(上文所描述)。其他實例可包括用於儲存排行榜資料之排行榜資料庫、用於儲存好友狀態記錄之好友服務資料庫、用於儲存使用者設定檔資料之設定檔資料庫,及用於儲存與線上遊戲有關之資料的遊戲資料庫。可使用任何類型之資料庫(例如,MySQL、Microsoft SQL等),但在一特定實施例中,可使用密鑰/值資料庫(諸如,Berkley DB及/或MZBasic DB)。資料庫可在儲存區域網路(SAN)或其他儲存組態中跨越大量大容量儲存器件(例如,硬碟機)而展開。
因此,當特定服務處理及/或儲存資料(如上文所描述)時,可將資料儲存於資料庫1920內。然而,一些服務可能不使用資料庫。舉例而言,如上文所描述,邀請服務112可實施為一無狀態服務,且因此,可能不需要將資料儲存於資料庫1920內(但根據本發明之基礎原理,此實施仍係可能的)。
API 1913可經設計以使用任何合適之網路協定堆疊(包括(例如)網路層處之TCP/IP或UDP/IP及應用層處之HTTPS)與網路服務1901至1903通信及交換資訊。可使用經由HTTP或HTTPS的基於遠端程序呼叫(RPC)之協定(諸如,SOAP)及/或可使用表像化狀態轉變(REST)協定。此外,該等服務可實施於任何計算平台上,計算平台包括(舉例而言)Xserve或執行Unix、Linux或Apache軟體平台之類似伺服器。在一特定實施例中,平台包括實施於Linux上之網頁物件。前述實例僅為達成說明之目的而提供。本發明之基礎原理不限於用於將應用程式連結至服務之任何特定機制或任何特定網路協定集合。
20 說明本發明之一實施例中的可實施於無線器件120上的更詳細之軟體架構,該軟體架構包括應用程式設計介面(API)2001a至2001b。雖然此實施例描述於多玩家遊戲框架2000之內容背景內,但本發明之基礎原理不限於遊戲實施。舉例而言,圖20 中所展示之軟體架構可用以支援並非遊戲之各種共同作業式應用程式(例如,共同作業式聊天、多參與方共同作業式音訊/視訊等)。
在圖20 中所展示之架構中,提供遊戲框架2000以支援本文中所描述之各種多參與方特徵及P2P特徵。在一實施例中,遊戲框架2000經設計以在行動器件之作業系統2005上執行。舉例而言,若行動器件120為iPhone、iPad或iPod Touch,則作業系統2005可為iPhone OS(由本申請案之受讓人設計之行動作業系統)。
遊戲框架2000可包括公用應用程式設計介面(API)2001b及私有或「安全」API 2001a。在一實施例中,經設計以提供本文中所描述的各種與遊戲有關之特徵的遊戲中心應用程式2031可向公用API 2001b與私有API 2001a兩者發出呼叫,而其他應用程式2030(例如,由第三方設計之應用程式)僅具備存取公用API 2001b之權利。舉例而言,行動器件120之設計者可能希望保持某些API函式,其涉及來自公用API 2001b的避免被第三方開發者誤用的可能敏感之資訊(例如,好友請求、好友清單等)。然而,可將安全API 2001a與公用API 2001b兩者合併成可由行動器件上之所有應用程式存取之一單一API(亦即,遵照本發明之基礎原理,不需要將API分成單獨的公用組件及私有組件)。「API 2001」之符號表示有時在下文用以指代可見於公用API 2001b及/或私有API 2001a中之操作。
遊戲中心應用程式2031之一實施例描述於以下申請案中:2010年4月7日申請的題為「用於提供遊戲中心之系統及方法(Systems and Methods for Providing a Game Cente)」的同在申請中之申請案第61 321,861號(代理人案號為第4860.P9127USP1號,該申請案之發明者為Marcel Van Os及Mike Lampell)(在下文中稱為「遊戲中心專利申請案」),該申請案已讓與本申請案之受讓人且以引用的方式併入本文中。簡言之,遊戲中心應用程式2031包括遊戲中心圖形使用者介面(GUI),其用於導覽多玩家遊戲;購買新遊戲;擷取與遊戲有關之資訊(例如,排行榜資訊、成績、好友資訊等);聯繫好友玩遊戲;請求與其他使用者之遊戲匹配;及邀請特定使用者。由遊戲中心應用程式2031執行之各種其他函式描述於上文所引用之遊戲中心專利申請案中。遊戲中心函式中之一些函式可由遊戲框架2000來提供且可由其他應用程式2030經由公用API 2001b存取。
在一實施例中,藉由遊戲框架2000暴露之API 2001簡化了針對行動器件120設計多玩家共同作業式遊戲之過程。詳言之,在一實施例中,API 2001允許開發者發出一簡單API呼叫以調用連接使用者以進行多玩家P2P遊戲會期的相對複雜之過程。舉例而言,可自API 2001調用諸如INVITE(玩家B ID,桶ID)之簡單API呼叫,以起始上文所描述之詳細邀請序列。類似地,可自API 2001調用諸如MATCH(玩家A ID,桶ID)之API呼叫,以起始上文所描述之詳細配對序列。INVITE及MATCH函式在本文中有時大體上稱作「P2P連接函式」。在一實施例中,遊戲框架2000包括回應於此等API呼叫而管理邀請及配對操作所需之程式碼(如下文更詳細描述)。請注意,實際API函式可具有稍微不同於上文所闡述之彼等資料格式的資料格式(但其可導致由遊戲框架2000執行之類似操作)。本發明之基礎原理不限於用於指定API函式之任何特定格式。
各種其他類型的與遊戲有關之異動及資訊亦可由遊戲框架2000代表遊戲中心2031及其他應用程式2030來管理。此資訊中之一些資訊描述於遊戲中心專利申請案中。舉例而言且並非限制,此資訊可包括與達成每一遊戲之頂級得分的彼等使用者有關的「排行榜」資訊及識別已完成某些遊戲特有成績之使用者的「成績」資訊。每一應用程式開發者可指定其自身的針對每一遊戲應用程式2030之「成績」集合(例如,完成第1至第3關;在5分鐘內完成第1關;每一關殺死50個以上;擊倒20面旗等)。
遊戲框架2000亦可包括用於在遊戲中心2031及其他遊戲應用程式2030之內容背景內管理使用者之好友資料且整合好友資料的程式碼。舉例而言,當使用者選擇至遊戲中心2031內之特定遊戲的連結時,可顯示針對彼遊戲的與使用者之好友中之每一者有關的資訊(例如,好友在排行榜上的排名、好友之成績、使用者與其好友中之每一者玩遊戲時的結果等)。在一實施例中,遊戲框架2000之API 2001包括用於存取由好友服務管理之好友資料的函式,該好友服務諸如描述於以下申請案中之好友服務:2010年4月7日申請的題為「用於有效地管理社交網路連接服務中之資料的裝置及方法(Apparatus and Method for Efficiently Managing Data in a Social Networking Service)」的同在申請中之申請案第61 321,848號(代理人案號為第4860.P9240號,該申請案之發明者為Amol Pattekar、Jeremy Werner、Patrick Gates及Andrew H. Vyrros)(在下文中稱為「好友服務申請案」),該申請案已讓與本申請案之受讓人且以引用的方式併入本文中。
如圖20 中所說明,在一實施例中,遊戲精靈協助程式2020可將遊戲框架2000介接至第一服務集合2050,且遊戲服務組件2010可將遊戲框架2000介接至第二服務集合2051。舉例而言,第一服務集合2050可包括上文所描述之邀請服務112、配對服務111及中繼服務1051,及上文所引用之好友服務申請案中所描述的好友服務。可經由遊戲精靈協助程式2020而存取之其他服務包括排行榜服務(提供排行榜資料);遊戲服務(提供與遊戲中之每一者有關的統計資料及其他資料,及購買遊戲之能力);使用者鑑認服務(用於鑑認行動器件之使用者);及/或使用者設定檔服務(用於儲存使用者設定檔資料,諸如使用者偏好)。經由遊戲服務組件2010而存取之第二服務集合2051可包括上文所描述的連接資料交換(CDX)服務110及NAT周遊服務290至291。雖然出於說明之目的而在圖20 中說明為單獨組件,但遊戲精靈協助程式2020及遊戲服務模組2010實際上可為遊戲框架2000之組件。在一實施例中,遊戲精靈協助程式2020及2010經由預定義之API與網路服務2050至2051中之每一者通信,在一實施例中,預定義之API為私有API(亦即,並未向第三方開發者發佈)。
在一實施例中,遊戲精靈協助程式2020可使用HTTPS協定與配對服務111、邀請服務112及其他服務2050通信,而遊戲服務模組2010可使用相對輕量型協定(諸如,UDP通訊端)與CDX服務110及NAT周遊服務290至291通信。然而,如先前所敍述,可使用各種其他網路協定同時仍遵照本發明之基礎原理。
另外,如圖20 中所說明,遊戲精靈協助程式2020可接收由某些服務2052(例如,邀請服務及配對服務)產生之推送通知2052,而其他類型之推送通知2053可由遊戲中心直接接收(例如,好友服務通知,諸如新的好友請求)。在一實施例中,將此等推送通知2053直接提供至遊戲中心2031以確保使用者之敏感性資料不可被由第三方應用程式開發者設計之應用程式2030存取。
返回至上文在圖11 中所闡述之遊戲邀請實例,當行動器件A上之應用程式2030向遊戲框架2000之API 2001b發出邀請呼叫以邀請行動器件B之使用者(例如,INVITE(玩家B ID,遊戲桶ID))時,遊戲框架2000可將邀請請求傳遞至行動器件A之遊戲精靈協助程式2020。遊戲精靈協助程式2020可接著與邀請服務112通信以提交邀請請求。邀請服務112可接著使用推送通知服務1050(如上文所描述)來將邀請推送至行動器件B之遊戲精靈協助程式2020。行動器件B之遊戲精靈協助程式2020可接著與行動器件B之遊戲框架2000通信以判定發送邀請所針對之遊戲是否安裝於行動器件B上。若該遊戲安裝於行動器件B上,則遊戲框架2000可觸發應用程式2030及/或產生邀請之視覺通知。若未安裝該應用程式,則遊戲框架2000可藉由對購買遊戲之出價(例如,經由遊戲中心2031 GUI)而觸發對行動器件B之使用者的邀請之視覺通知。或者,可藉由在行動器件120上執行之推送通知精靈協助程式(未圖示)來產生視覺通知。若行動器件B之使用者購買了遊戲,則邀請序列可在購買之後繼續。若行動器件B之使用者接受了邀請請求,則行動器件B之遊戲框架2000可將邀請請求傳遞至其遊戲精靈協助程式2020,遊戲精靈協助程式2020可接著對邀請服務112作出回應。
回想起在圖11 中,相容性檢查1106判定行動器件A與B之NAT類型相容。因此,在1108處,行動器件A之遊戲精靈協助程式2020可接收到行動器件B之接受(例如,在該實例中,經由推送通知),且在一實施例中,將該接受傳遞至遊戲框架2000。在此階段,行動器件A之遊戲框架2000可向請求應用程式2030通知行動器件B已接受(經由API 2001),或可等待直至已成功連接器件才通知請求應用程式2030。在任一狀況下,遊戲框架2000可向遊戲服務模組2010傳遞連接請求,在一實施例中,遊戲服務模組2010可起始與行動器件B之連接資料交換。詳言之,遊戲服務模組可使用CDX服務110將行動器件A之連接資料傳輸至行動器件B(參見(例如)圖11 中之異動1111及1112)。如上文所描述,可使用安全「票證」資料結構將此通信實施為UDP連接。
回想起在圖12 中,若相容性檢查1106判定行動器件A與B之NAT類型不相容,則可使用中繼服務1051來提供器件之間的連接。因此,行動器件B之遊戲精靈協助程式2020可接收來自邀請服務之中繼回應1203(圖12 中所展示)且行動器件A之遊戲精靈協助程式2020可接收來自邀請服務之中繼回應1205(經由推送通知服務1050)。行動器件A及B之遊戲精靈協助程式2020可在1206及1207處與中繼服務通信以擷取組態資料。在1210處,行動器件B之遊戲精靈協助程式2020接收來自行動器件A之中繼更新資料,且在1213處,行動器件A之遊戲精靈協助程式2020接收來自行動器件B之中繼更新資料。
11 及圖12 中所展示之過程的最終結果為:行動器件A與B彼此建立一連接(直接的P2P連接或中繼連接)。在一實施例中,在偵測到成功連接後,遊戲框架2000便可使用API呼叫(例如,CONNECTED(玩家A ID,玩家B ID))通知請求連接之應用程式2030。行動器件A與B可接著使用已建立之連接玩特定遊戲或其他共同作業式應用程式2030。
因此,回應於來自API 2001的相對簡單之呼叫(例如,INVITE玩家B ID,遊戲桶ID),可由遊戲框架2000來管理複雜的異動系列,以在行動器件A與B之間建立P2P或中繼連接。在一實施例中,遊戲框架2000執行操作序列以連接行動器件A與B,且接著將結果提供至請求應用程式2030,藉此使得應用程式設計者可顯而易見API呼叫之細節。因而,應用程式設計者不需要理解如何在網路上連接行動器件A與B,或執行用於使得能夠在器件之間進行通信所需的各種其他函式,藉此簡化應用程式設計過程。
以一類似方式,遊戲框架2000可使用配對服務111在行動器件A與其他參與者之間建立匹配,如上文關於圖2a 至圖2b 所描述。在此實例中,應用程式2030可向API 2001發出簡單呼叫,諸如MATCH(玩家A ID,遊戲包ID)。回應於此,遊戲框架2000可管理匹配及連接資料交換操作。當匹配操作及/或P2P連接完成時,遊戲框架2000將結果提供回至應用程式2030。
舉例而言,在圖2b 中,遊戲框架2000可使用遊戲服務模組2010來與連接資料交換(CDX)服務110及NAT周遊服務290至291通信且可使用遊戲精靈協助程式來與配對服務111通信。一旦作出匹配,行動器件A之遊戲精靈協助程式2020便在229處接收票證A且遊戲框架2000使用此資訊來經由遊戲服務模組2010實施連接資料交換。舉例而言,在232處,遊戲框架2000可經由NAT周遊服務290請求其自身的連接資料且可接著在233至234處經由CDX服務110交換其連接資料。在237及240處,行動器件A之遊戲服務模組2010接收分別用於行動器件B及C之連接資料。在此等交換之後,遊戲服務模組2010在241處建立P2P連接且遊戲框架2000使用API通知(例如,MATCH COMPLETE(玩家B ID,玩家C ID))向應用程式2030通知連接過程完成。應用程式可接著使用已建立之P2P連接執行。
在一些實施例中,可為使用者給予與當前註冊為「線上」之其他好友玩遊戲的選項。在此狀況下,可經由推送通知2052或推送通知2053(由遊戲中心2031直接接收)來提供某些好友在線上之通知。遊戲中心2031及/或應用程式2030可接著將該等通知提供給使用者且為使用者提供與一或多個選定之線上好友玩的選項。然而,請注意,本文中所描述之邀請序列將工作,而不管是否提供線上通知。在一實施例中,可藉由一可由遊戲精靈協助程式2020存取之服務(例如,藉由上文所敍述之好友服務或藉由單獨的「存在」服務)來監視使用者之線上狀態。
遊戲框架2000之一實施例提供用於組合邀請/配對操作,其中使用者可邀請一或多個好友與一未知的經匹配之參與者群組玩遊戲。舉例而言,若一遊戲需要4個玩家且第一使用者邀請第二使用者玩該遊戲,接著邀請服務112最初可連接第一使用者與第二使用者且配對服務111可接著使第一使用者及第二使用者與兩個(或兩個以上)其他玩家匹配。在此實施例中,遊戲框架2000最初可執行上文所描述之邀請序列以連接第一使用者與第二使用者。在一實施例中,一旦第一使用者與第二使用者已成功連接,遊戲框架2000便可實施配對序列以識別其他使用者並與其他使用者連接。如上文所敍述,在一實施例中,由配對服務應用之匹配準則可包括第一使用者與第二使用者兩者(例如,第一使用者與第二使用者兩者之NAT類型、連接類型、語言等)。或者,可評估該兩個使用者中之一者的準則以作出匹配決策。
一旦連接了所有使用者,遊戲框架2000便可經由API 2001將連接結果提供至請求連接之應用程式2030。再次,回應於應用程式2030所作出的相對簡單之API呼叫,遊戲框架2000進入一複雜的異動集合以連接該等器件中之每一者。一旦成功地連接了該等器件,遊戲框架2000便將結果提供回至請求應用程式2030。
如圖20 中所說明,遊戲框架2000可包括用以暫時儲存使用者與其他遊戲參與者之間的通信的通信緩衝器2003。通信可包括(例如)文字、音訊及/或視訊通信。遊戲框架2000可基於每一應用程式2030之要求而建立緩衝器2003。舉例而言,藉由慢網路連接進行之音訊/視訊通信可能需要相對較大之緩衝器2003。在一實施例中,每一應用程式2030可經由API 2001(例如,使用BUFFER(大小)命令)作出建立某大小之通信緩衝器的明確請求。或者,遊戲框架2000可基於每一應用程式之通信要求而自動地產生緩衝器。舉例而言,遊戲框架2000可基於是否需要支援文字、音訊及/或視訊而選擇特定緩衝器大小。
在一實施例中,通信緩衝器2003可於在使用者之間建立所有P2P連接之前暫時儲存通信流。舉例而言,在邀請服務112或配對服務111已識別該等使用者中之每一者之後,但在CDX服務110完成連接資料交換操作之前,可在連接遊戲參與者之過程中向每一使用者通知其他遊戲參與者。在此階段,行動器件120之使用者可將文字、音訊及/或視訊通信流傳輸至其他參與者。遊戲框架2000將用於尚未連接之彼等參與者之通信流儲存於通信緩衝器2003內。遊戲框架2000可在用於每一器件之連接完成時接著自緩衝器2003傳輸文字、音訊及/或視訊。
在一實施例中,遊戲精靈協助程式2020包括快取記憶體2021,其用於快取存留於服務2050中之每一者上的資料以減少網路訊務。舉例而言,可按照快取管理策略所指定將使用者之好友清單、排行榜資料、成績資料、存在資料及設定檔資料儲存於快取記憶體2021中。在一實施例中,由儲存有資料之每一個別服務來驅動快取管理策略。因此,對於n 個不同服務,可對快取記憶體2021應用n 個不同的快取管理策略。另外,因為快取管理策略係由該等服務來驅動,所以其可基於當前網路及/或伺服器負載狀況來動態地修改。舉例而言,在服務負載重之時段期間(例如,聖誕節、新產品發佈日等),服務可以相對較不頻繁之快取更新(例如,每12個小時更新一次)來動態地指定快取管理策略。相反,在服務負載並不重之時段期間,服務可以更頻繁之快取更新(例如,每小時、每1小時、每2小時更新一次等)來指定快取策略。
在一實施例中,使用儲存於快取記憶體2021中之某些資料記錄的存留時間(TTL)值來指定快取管理策略。當資料記錄儲存於快取記憶體中之時間超過其TTL值時,則將彼資料視為「陳舊的」且可將針對彼資料之本地請求直接轉遞至與彼資料相關聯之服務。在一實施例中,請求包括識別資料之當前版本之ID碼。若ID碼匹配服務上之ID碼,則資料將仍為有效的且並不需要更新。可接著自服務發送回一回應,該回應指示快取記憶體中之資料為當前的且可重設該資料記錄之TTL值。
除使用如上文所描述之快取管理策略之外,在一實施例中,亦可使用推送通知服務1050將用於某些類型之資料的快取更新推送至行動器件。舉例而言,可將使用者之好友清單之改變或使用者之好友的當前線上狀態的改變動態地推送至使用者之行動器件120。推送通知可由遊戲精靈協助程式2020來接收,遊戲精靈協助程式2020可接著更新快取記憶體2021以包括由服務推送之資料之相關部分(亦即,可能不需要更新快取記憶體中與彼服務相關聯的所有資料)。相反,一些推送通知可指示遊戲精靈協助程式2020覆寫快取記憶體之整個內容(或至少快取記憶體之與執行推送之服務相關聯的部分)。
使用推送來更新快取記憶體2021之彼等服務可選擇相對較高之TTL值(及/或可不設定TTL值),此係因為其具有推送通知以更新儲存於快取記憶體2021中之資料的能力。在一實施例中,每一服務指定一事件集合,該事件集合可觸發一推送通知快取更新。舉例而言,快取更新事件可包括:好友之線上狀態之改變、新的好友請求、對好友請求之接受、刪除好友操作、好友正玩特定遊戲之指示、好友所達到的遊戲成績、特定排行榜之前10名的更新,或被視為對保證快取更新具有足夠重要性的任何其他事件。以此方式使用推送通知來更新快取記憶體2021可減少網路及服務負載,此係因為在推送更新之情況下,不需要行動器件與服務之間的週期性輪詢。
遊戲框架2000之一實施例基於使用者之國家及/或地理位置而獨特地格式化呈現給終端使用者之資料。舉例而言,針對處於不同國家及位置之使用者,可以不同方式來呈現諸如當前日期、時間及貨幣值之值。舉例而言,在美國,日期格式可為[月、日,年 ](例如,4月25日,2010年),而在其他國家中,日期格式可為[日、月,年 ](例如,25日、4月,2010年)。類似地,當表示美國及一些其他國家之時間時,可使用AM/PM符號表示,且可在小時與分鐘之間使用冒號(例如,3:00 PM)。相反,許多其他國家並不使用AM/PM符號表示及/或在小時與分鐘之間使用逗號(例如,15,00)。作為另一實例,世界之許多地區使用公制系統而世界之一些地區並不使用公制系統(例如,美國)。請注意,此等情況為可供本發明之某些實施例使用之簡單說明性實例。本發明之基礎原理不限於任何特定資料格式集合。
在一實施例中,可在顯示排行榜資料、成績資料、好友資料及/或由遊戲框架2000處理之任何其他資料時選擇此等不同資料格式。遊戲框架2000可以各種方式判定使用者之國家及/或地理位置。舉例而言,在一實施例中,此資訊簡單地提供於使用者之設定檔資料中及/或可基於使用者之蜂巢式服務提供商而判定。亦可使用(例如)全球定位系統(GPS)追蹤來判定使用者之位置。
與地理位置及/或國家無關的其他類型之資料格式化亦可由遊戲框架2000來管理。舉例而言,當顯示排行榜資料時,重要的係知道:最低得分是將使用者置於排行榜之頂部抑或底部。對於一些遊戲(例如,高爾夫、徑賽、競賽、滑雪等),較低數字指示較佳表現,而在其他遊戲(例如,足球、棒球等)中,較高數字指示較佳表現。因此,在一實施例中,應用程式2030經由API 2001指定將使用之得分的類型(例如,「遞增」或「遞減」)。遊戲框架2000可接著使用適當標記集合及格式化來顯示得分。
遊戲框架2000之一實施例亦基於使用者與使用者之好友之間的關係而篩選使用者資料。舉例而言,本發明之一實施例允許「詳細」視圖、「好友」視圖及「公用」視圖。在一實施例中,詳細視圖可用於擁有資料(亦即,使用者之個人資訊)之使用者;好友視圖可用於使用者之好友;且公用視圖可用於所有其他使用者。
舉例而言,公用視圖可僅包括與每一使用者相關聯之「別名」名稱、由該別名玩之遊戲及相關聯之得分,及玩該等遊戲之日期/時間。此資訊可由遊戲框架2000使用以充填可接著經由遊戲中心2031顯示之公用排行榜。
好友視圖可包括來自一般視圖之所有資訊以及待於使用者之好友當中共用的任何額外資訊,包括(例如)(僅舉幾個例子)使用者所擁有之遊戲;使用者所玩之遊戲;使用者之成績及得分;使用者具有之好友之數目;彼等好友之識別碼;識別使用者之化身的URL,及/或使用者之線上狀態。在一實施例中,「好友」視圖提供待與好友共用之預設資訊集合,但終端使用者可調整此預設組態並以特殊性指定待由每一個別好友或好友群組(例如,同事、家庭成員、大學/中學好友等)共用之資訊之類型。
「詳細」視圖可包括來自「公用」視圖及「好友」視圖之所有資訊,以及由各種服務2050代表終端使用者管理的任何其他資訊。舉例而言,此可包括所有使用者之設定檔資料;使用者之通用唯一識別府(「UUID」)(在本文中有時稱作「玩家ID」);玩家姓名;別名姓名;遊戲之數目及遊戲之識別碼;使用者之好友;所有使用者之成績等。
在一些情況下,應用程式2030可能僅需要與每一使用者有關之少量資訊(諸如,每一使用者之玩家ID)。舉例而言,在一實施例中,當請求匹配時,遊戲框架2000最初可能僅需要每一玩家之ID。當配對服務作出匹配時(參見上文),遊戲框架2000可判定經匹配之使用者中之任一者是否為好友(例如,經由與好友服務之通信及/或藉由詢問使用者之本地好友資料)。若經匹配之使用者中之任一者為好友,則遊戲框架2000可擷取額外使用者資料並將彼資料提供給任何經匹配之好友。以此方式,遊戲框架2000基於使用者之識別碼及該等使用者中之每一者之間的關係而篩選資訊。
在一實施例中,若第一使用者與第二使用者並不具有好友關係,則遊戲框架2000最初在該兩個使用者之間提供公用視圖。然而,在一實施例中,遊戲框架2000允許第一使用者向第二使用者發送一好友請求(例如,使用第二使用者之別名)。若接受好友請求,則遊戲框架2000將額外資訊(例如,預設「好友」視圖)提供給該等使用者中之每一者。
不同的API實施例
實施於一實施例中之API為由一軟體組件(在下文中稱為「API實施軟體組件」)實施之介面,其允許一不同的軟體組件(在下文中稱為「API呼叫軟體組件」)存取並使用一或多個函式、方法、程序、資料結構及/或由API實施軟體組件提供之其他服務。舉例而言,API允許API呼叫軟體組件之開發者(其可為第三方開發者)利用由API實施軟體組件提供之特定特徵。可能存在一個API呼叫軟體組件或可能存在一個以上此軟體組件。API可為電腦系統或程式庫提供以便支援對來自軟體應用程式之服務的請求的原始程式碼介面。API可根據程式設計語言來指定,程式設計語言可為解釋性的或在建置應用程式時編譯,而非如何將資料佈置於記憶體中之顯式低級描述。
API定義API呼叫軟體組件在存取及使用API實施軟體組件之特定特徵時使用的語言及參數。舉例而言,API呼叫軟體組件經由由API暴露之一或多個API呼叫(有時稱作函式或方法呼叫)存取API實施軟體組件之特定特徵。API實施軟體組件可回應於來自API呼叫軟體組件之API呼叫而經由API傳回一值。雖然API定義API呼叫之語法及結果(例如,如何調用API呼叫及API呼叫作何操作),但API通常並不揭露API呼叫如何實現由API呼叫指定之函式。各種函式呼叫或訊息係經由在呼叫軟體(API呼叫軟體組件)與API實施軟體組件之間的一或多個應用程式設計介面而傳送。傳送函式呼叫或訊息可包括發佈、起始、調用、呼叫、接收、傳回或對函式呼叫或訊息作出回應。因此,API呼叫軟體組件可傳送一呼叫且API實施軟體組件可傳送一呼叫。
舉例而言,API實施軟體組件2010及API呼叫軟體組件可為作業系統、程式庫、器件驅動程式、API、應用程式,或其他軟體模組(應理解,API實施軟體組件與API呼叫軟體組件可為彼此相同或不同之類型的軟體模組)。API呼叫軟體組件可為本地軟體組件(亦即,在與API實施軟體組件相同之資料處理系統上)或經由網路經由API與API實施軟體組件通信的遠端軟體組件(亦即,在與API實施軟體組件不同之資料處理系統上)。應理解,API實施軟體組件亦可充當API呼叫軟體組件(亦即,其可向由一不同的API實施軟體組件暴露之API發出API呼叫)且API呼叫軟體組件亦可藉由實施暴露至一不同的API呼叫軟體組件之API而充當API實施軟體組件。
API可允許以不同程式設計語言撰寫之多個API呼叫軟體組件與API實施軟體組件通信(因此,API可包括用於在API實施軟體組件與API呼叫軟體組件之間轉譯呼叫並傳回的特徵);然而,API可根據特定程式設計語言來實施。
21 說明API架構之一實施例,該API架構包括實施API 2120之API實施軟體組件2110(例如,作業系統、程式庫、器件驅動程式、API、應用程式,或其他軟體模組)。API 2120指定一或多個函式、方法、類別、物件、協定、資料結構、格式,及/或可由API呼叫軟體組件2130使用的API實施軟體組件之其他特徵。API 2120可指定至少一呼叫約定,該至少一呼叫約定指定API實施軟體組件中之一函式如何接收來自API呼叫軟體組件之參數及該函式如何將結果傳回至API呼叫軟體組件。API呼叫軟體組件2130(例如,作業系統、程式庫、器件驅動程式、API、應用程式,或其他軟體模組)經由API 2120發出API呼叫以存取並使用由API 2120指定的API實施軟體組件2110之特徵。API實施軟體組件2110可回應於API呼叫而經由API 2120將一值傳回至API呼叫軟體組件2130。
應瞭解,API實施軟體組件2110可包括額外函式、方法、類別、資料結構,及/或並未經由API 2120指定的及不可用於API呼叫軟體組件2130之其他特徵。應理解,API呼叫軟體組件2130可位於與API實施軟體組件2110相同之系統上,或可位於遠端處且經由網路使用API 2120存取API實施軟體組件2110。雖然圖21 說明單一API呼叫軟體組件2130與API 2120互動,但應理解,可以與API呼叫軟體組件2130不同之語言(或相同之語言)撰寫的其他API呼叫軟體組件可使用API 2120。
API實施軟體組件2110、API 2120及API呼叫軟體組件2130可儲存於機器可讀媒體中,機器可讀媒體包括用於以可由機器讀取之形式儲存資訊的任何機構(例如,電腦或其他資料處理系統)。舉例而言,機器可讀媒體包括磁碟、光碟、隨機存取記憶體;唯讀記憶體、快閃記憶體器件等。
在圖22 (「軟體堆疊」)中(一例示性實施例),應用程式可使用若干服務API向服務1或服務2發出呼叫且使用若干OS API向作業系統(OS)發出呼叫。服務1及服務2可使用若干OS API向OS發出呼叫。
請注意,服務2具有兩個API,其中一個API(服務2 API 1)接收來自應用程式1之呼叫並將值傳回至應用程式1,且另一個API(服務2 API 2)接收來自應用程式2之呼叫並將值傳回至應用程式2。服務1(其可為(例如)軟體程式庫)向OS API 1發出呼叫並接收來自OS API 1的傳回之值,且服務2(其可為(例如)軟體程式庫)向OS API 1與OS API 2兩者發出呼叫並接收來自OS API 1與OS API 2兩者的傳回之值。應用程式2向OS API 2發出呼叫並接收來自OS API 2的傳回之值。
例示性資料處理器件
23 為說明可用於本發明之一些實施例中之例示性電腦系統的方塊圖。應理解,雖然圖23 說明電腦系統之各種組件,但其並不意欲表示使該等組件互連之任何特定架構或方式,因為此等細節與本發明無密切關係。應瞭解,具有較少組件或較多組件之其他電腦系統亦可與本發明一起使用。
如圖23 中所說明,電腦系統2300(其為資料處理系統之形式)包括與以下各項耦接之匯流排2350:處理系統2320、電源供應器2325、記憶體2330,及非揮發性記憶體2340(例如,硬碟機、快閃記憶體、相變記憶體(PCM)等)。匯流排2350可經由如此項技術中所熟知之各種橋接器、控制器及/或配接器而連接至彼此。處理系統2320可自記憶體2330及/或非揮發性記憶體2340擷取指令,且執行該等指令以執行如上文所描述之操作。匯流排2350使上述組件互連在一起且亦使彼等組件互連至選用之銜接台2360、顯示控制器&顯示器件2370、輸入/輸出器件2380(例如,NIC(網路介面卡)、游標控制(例如,滑鼠、觸控式螢幕、觸控板等)、鍵盤等),及選用之無線收發器2390(例如,藍芽、WiFi、紅外線等)。
24 為說明可用於本發明之一些實施例中之例示性資料處理系統的方塊圖。舉例而言,資料處理系統2400可為手持型電腦、個人數位助理(PDA)、行動電話、攜帶型遊戲系統、攜帶型媒體播放機、平板型或手持型計算器件(可包括行動電話、媒體播放機及/或遊戲系統)。作為另一實例,資料處理系統2400可為網路電腦或另一器件內之嵌入式處理器件。
根據本發明之一實施例,資料處理系統2400之例示性架構可用於上文所描述之行動器件。資料處理系統2400包括處理系統2420,其可包括一或多個微處理器及/或積體電路上系統。處理系統2420與以下各項耦接:記憶體2410、電源供應器2425(其包括一或多個電池)、音訊輸入/輸出2440、顯示控制器及顯示器件2460、選用之輸入/輸出2450、輸入器件2470,及無線收發器2430。應瞭解,在本發明之某些實施例中,圖24中未展示之額外組件亦可為資料處理系統2400之一部分,且在本發明之某些實施例中,可使用比圖24 中所展示之組件少的組件。另外,應瞭解,如此項技術中所熟知,圖24 中未展示之一或多個匯流排可用以使該等各種組件互連。
記憶體2410可儲存資料及/或用於由資料處理系統2400執行之程式。音訊輸入/輸出2440可包括麥克風及/或揚聲器,以(例如)經由揚聲器及麥克風播放音樂及/或提供電話功能性。顯示控制器及顯示器件2460可包括圖形使用者介面(GUI)。無線(例如,RF)收發器2430(例如,WiFi收發器、紅外線收發器、藍芽收發器、無線蜂巢式電話收發器等)可用以與其他資料處理系統通信。該一或多個輸入器件2470允許使用者向系統提供輸入。此等輸入器件可為小鍵盤、鍵盤、觸控面板、多點觸控面板等。選用的其他輸入/輸出2450可為用於銜接台之連接器。
本發明之實施例可包括如上文所闡述之各種步驟。該等步驟可以使得通用或專用處理器執行某些步驟之機器可執行指令來體現。或者,此等步驟可由含有用於執行該等步驟之固線式邏輯之特定硬體組件來執行,或由程式化電腦組件及定製硬體組件之任何組合來執行。
本發明之元件亦可作為用於儲存機器可執行程式碼之機器可讀媒體來提供。機器可讀媒體可包括(但不限於)軟碟、光碟、CD-ROM,及磁光碟、ROM、RAM、EPROM、EEPROM、磁卡或光卡,或適合於儲存電子程式碼之其他類型之媒體/機器可讀媒體。
貫穿前述描述,出於解釋之目的,闡述眾多特定細節以便提供對本發明之透徹理解。然而,熟習此項技術者將顯而易見,本發明可在無此等特定細節中之一些細節之情況下加以實踐。舉例而言,熟習此項技術者將容易顯而易見,可將本文中所描述之功能模組及方法實施為軟體、硬體或其任何組合。此外,雖然本文中在行動計算環境(亦即,使用行動器件120至123;601至603)之內容背景內描述本發明之實施例,但本發明之基礎原理不限於行動計算實施。實質上,在一些實施例中,可使用任何類型之用戶端或同級資料處理器件,包括(例如)桌上型或工作站電腦。因此,本發明之範疇及精神應根據以下申請專利範圍來判斷。
100...資料服務
110...連接資料交換(CDX)服務
111...配對服務
112...邀請服務
120...網路/行動器件A
121...行動器件B
122...行動器件C
123...行動器件
125...網路鏈路
126...網路鏈路
127...網路鏈路
128...網路鏈路
290...NAT周遊服務
291...NAT周遊服務
301...會期ID
302...會期參與者之數目
303...會期之參與者的索引
304...期滿時間/日期
305-306...用於會期之每一參與者之CDX打孔資料
307...訊息鑑認碼
601...行動器件A
602...行動器件B
603...行動器件C
605...通信鏈路
606...通信鏈路
607...通信鏈路
608...通信鏈路
609...通信鏈路
610...網路/通信鏈路
611...NAT器件
612...NAT器件
613...NAT器件
614...NAT器件
620...私有網路連接
701...通信介面
702...通信介面
705...故障偵測模組
706...鏈路管理模組
710...資料結構/主要/次要連接資料
801...主要頻道
802...主要頻道
1050...推送通知服務
1051...中繼服務
1052...註冊/目錄服務
1201...中繼查詢請求
1202...中繼查詢回應
1203...中繼回應
1204...中繼回應
1205...中繼回應
1300...中繼查詢服務
1301...中繼主機資料庫
1302-1303...中繼主機
1400...NAT相容性圖表
1501...配對調度器
1502...請求表
1503...可匹配集合識別符(「MSI」)表
1510...配對器
1512...資料庫
1901-1903...網路服務
1910...應用程式設計介面(「API」)
1911...應用程式
1912...預定義之軟體框架
1913...服務側API
1920...資料庫
2000...多玩家遊戲框架
2001a...私有或「安全」API
2001b...公用應用程式設計介面(API)
2003...通信緩衝器
2005...作業系統
2010...遊戲服務組件
2020...遊戲精靈協助程式
2021...快取記憶體
2030...應用程式
2031...遊戲中心應用程式
2050...第一服務集合
2051...第二服務集合
2052...推送通知
2053...推送通知
2110...API實施軟體組件
2120...應用程式設計介面(API)
2130...API呼叫軟體組件
2300...電腦系統
2310...選用之快取記憶體
2320...處理系統
2325...電源供應器
2330...記憶體
2340...非揮發性記憶體
2350...匯流排
2360...選用之銜接台
2370...顯示控制器&顯示器件
2380...輸入/輸出器件
2390...選用之無線收發器
2400...資料處理系統
2410...記憶體
2420...處理系統
2425...電源供應器
2430...無線收發器
2440...音訊輸入/輸出
2450...選用之輸入/輸出
2460...顯示控制器及顯示器件
2470...輸入器件
圖1說明一行動器件群組與服務經由網路通信之網路架構。
圖2a至圖2c說明連接資料交換(CDX)服務、配對服務及/或邀請服務之一實施例之間的異動。
圖3說明票證資料結構之一實施例。
圖4說明藉由CDX服務實施之方法之一實施例。
圖5說明由行動器件實施之方法之一實施例。
圖6說明經由主要及次要通信頻道連接之行動器件群組。
圖7說明用於在主要及次要通信頻道間選擇之行動器件的一實施例。
圖8a至圖8b說明經由主要及次要通信頻道連接之行動器件群組及所得網路拓撲。
圖9說明用於在主要及次要通信頻道間選擇之電腦實施方法的一實施例。
圖10說明一行動器件群組與服務經由網路通信之網路架構,該等服務包括一目錄服務及一推送通知服務。
圖11說明邀請服務、推送通知服務及連接資料交換(CDX)服務之一實施例之間的異動。
圖12說明邀請服務、推送通知服務及中繼服務之一實施例之間的異動。
圖13說明用於在兩個或兩個以上行動器件之間建立一中繼連接的中繼服務之一實施例。
圖14說明用於判定NAT相容性之NAT相容性圖表的一實施例。
圖15說明用於使行動器件匹配以進行線上應用程式之配對服務的一實施例。
圖16說明用於令使用者/器件匹配之方法的一實施例。
圖17a至圖17d說明經執行以令使用者/器件匹配之一系列例示性表格更新。
圖18說明用於使用不同匹配適合度變數令使用者/器件匹配之方法。
圖19說明暴露用於應用程式之應用程式設計介面(API)及用於與一服務集通信之服務API的框架。
圖20說明具有用於應用程式之API、遊戲精靈協助程式及用於與服務通信之遊戲服務模組的遊戲框架之一實施例。
圖21說明API實施軟體組件及API呼叫軟體組件之一實施例。
圖22說明在作業系統、服務及應用程式之間進行API呼叫的一實施例。
圖23說明例示性電腦系統架構之一實施例。
圖24說明例示性電腦系統架構之另一實施例。
(無元件符號說明)

Claims (30)

  1. 一種藉由一第一行動計算器件用於建立及維持用於同級間(「P2P」)通信之備用頻道之電腦實施方法,其包含:在該第一行動計算器件與一第二行動計算器件之間建立一主要P2P通信頻道以開啟一P2P會期,該主要P2P通信頻道包含兩個主要通信鏈路,每一主要通信鏈路包括與該第一及第二行動計算器件連接之一第一網路位址轉譯(NAT)器件,其中該第一及第二行動計算器件獲得一第一NAT資料以周遊該等第一NAT器件;建立一或多個次要P2P通信頻道,每一次要P2P通信頻道包含兩個次要通信鏈路,每一次要通信鏈路包括連接至該第一及第二行動計算器件之一者之該第一NAT器件及一第二NAT器件之一者,其中該第一及第二行動計算器件獲得一第二NAT資料以周遊該等第二NAT器件;僅經由該主要P2P通信頻道傳送P2P資料;偵測該等主要通信鏈路之一者已降級至低於一特定臨限值;對此作出回應,促使該等次要P2P通信頻道中之一者作為該主要P2P通信頻道以不中斷地繼續該P2P會期。
  2. 如請求項1之方法,其進一步包含:藉由經由該等次要P2P通信頻道週期性地傳輸一活動信號封包而維持該等次要P2P通信頻道。
  3. 如請求項1之方法,其中建立一主要P2P通信頻道包含:在該第一及第二行動計算器件之間交換連接資料。
  4. 如請求項3之方法,其中交換連接資料進一步包含:執行一系列網際網路連線能力建立(「ICE」)異動。
  5. 如請求項1之方法,其中該特定臨限值包含該主要P2P通信頻道之一故障。
  6. 如請求項1之方法,其進一步包含:將與該主要P2P通信頻道及該一或多個次要P2P通信頻道有關之該連接資料連同該等通信頻道中之每一者之一當前狀態儲存於一儲存器件上。
  7. 如請求項1之方法,其中至少一通信鏈路係選自以下鏈路之一或多者:第三代(「3G」)無線蜂巢式鏈路、第四代(「4G」)無線蜂巢式鏈路、Wi-Fi鏈路,及藍芽鏈路。
  8. 如請求項1之方法,其中至少一主要P2P通信頻道或次要P2P通信頻道包括該第一行動計算器件與該第二行動計算器件之間的一私有網路鏈路。
  9. 如請求項1之方法,其中該第一NAT資料包含用於該第一NAT器件之NAT周遊資料及NAT類型資料,且該第二NAT資料包括用於該第二NAT器件之NAT周遊資料及NAT類型資料。
  10. 如請求項1之方法,其中建立該一或多個次要P2P通信頻道進一步包含經由該主要P2P通信頻道交換該等次要通信鏈路之連接資料。
  11. 一種第一行動計算器件,其包含用於儲存程式碼之一記憶體及用於處理該程式碼以執行以下操作之一處理器:在該第一行動計算器件與一第二行動計算器件之間建 立一主要P2P通信頻道以開啟一P2P會期,該主要P2P通信頻道包含兩個主要通信鏈路,每一主要通信鏈路包括與該第一及第二行動計算器件連接之一第一網路位址轉譯(NAT)器件,其中該第一及第二行動計算器件獲得一第一NAT資料以周遊該等第一NAT器件;建立一或多個次要P2P通信頻道,每一次要P2P通信頻道包含兩個次要通信鏈路,每一次要通信鏈路包括連接至該第一及第二行動計算器件之一者之該第一NAT器件及一第二NAT器件之一者,其中該第一及第二行動計算器件獲得一第二NAT資料以周遊該等第二NAT器件;僅經由該主要P2P通信頻道傳送P2P資料;偵測該主要通信鏈路之一者已降級至低於一特定臨限值;停止經由經降級之該主要P2P通信頻道之P2P資料之傳送;及對此作出回應,促使該等次要P2P通信頻道中之一者作為該主要P2P通信頻道以不中斷地繼續該P2P會期。
  12. 如請求項11之行動計算器件,其包含使得該處理器執行以下操作之額外程式碼:藉由經由該等次要P2P通信頻道週期性地傳輸一活動信號封包而維持該等次要P2P通信頻道。
  13. 如請求項11之行動計算器件,其中建立一主要P2P通信頻道包含:在該等行動計算器件之間交換連接資料。
  14. 如請求項13之行動計算器件,其中交換連接資料進一步 包含:執行一系列網際網路連線能力建立(「ICE」)異動。
  15. 如請求項11之行動計算器件,其中該特定臨限值包含該主要P2P通信頻道之一故障。
  16. 如請求項11之行動計算器件,其包含使得該處理器執行以下操作之額外程式碼:將與該主要P2P通信頻道及該一或多個次要P2P通信頻道有關之該連接資料連同該等通信頻道中之每一者之一當前狀態儲存於一儲存器件上。
  17. 如請求項11之行動計算器件,其中至少一通信鏈路係選自以下鏈路之一或多者:第三代(「3G」)無線蜂巢式鏈路、第四代(「4G」)無線蜂巢式鏈路、Wi-Fi鏈路,及藍芽鏈路。
  18. 如請求項11之行動計算器件,其中至少一主要P2P通信頻道或次要P2P通信頻道包括該第一行動計算器件與該第二行動計算器件之間的一私有網路鏈路。
  19. 如請求項11之行動計算器件,其中該第一NAT資料包含用於該第一NAT器件之NAT周遊資料及NAT類型資料,且該第二NAT資料包括用於該第二NAT器件之NAT周遊資料及NAT類型資料。
  20. 如請求項11之行動計算器件,其中建立該一或多個次要P2P通信頻道進一步包含經由該主要P2P通信頻道交換該等次要通信鏈路之連接資料。
  21. 一種上面儲存有程式碼之非暫時性機器可讀媒體,該程 式碼在由一計算器件執行時使得該計算器件執行以下操作:在一第一行動計算器件與一第二行動計算器件之間建立一主要P2P通信頻道以開啟一P2P會期,該主要P2P通信頻道包含兩個主要通信鏈路,每一主要通信鏈路包括與該第一及第二行動計算器件連接之一第一網路位址轉譯(NAT)器件,其中該第一及第二行動計算器件獲得一第一NAT資料以周遊該等第一NAT器件;建立一或多個次要P2P通信頻道,每一次要P2P通信頻道包含兩個次要通信鏈路,每一次要通信鏈路包括連接至該第一及第二行動計算器件之一者之該第一NAT器件及一第二NAT器件之一者,其中該第一及第二行動計算器件獲得一第二NAT資料以周遊該等第二NAT器件;僅經由該主要P2P通信頻道傳送P2P資料;偵測該等主要通信鏈路之一者已降級至低於一特定臨限值;對此作出回應,促使該等次要P2P通信頻道中之一者作為該主要P2P通信頻道以不中斷地繼續該P2P會期。
  22. 如請求項21之非暫時性機器可讀媒體,其包含使得處理器執行以下操作之額外程式碼:藉由經由該等次要P2P通信頻道週期性地傳輸一活動信號封包而維持該等次要P2P通信頻道。
  23. 如請求項21之非暫時性機器可讀媒體,其中建立一主要通信頻道包含:在該第一及第二行動計算器件之間交換 連接資料。
  24. 如請求項23之非暫時性機器可讀媒體,其中交換連接資料進一步包含:執行一系列網際網路連線能力建立(「ICE」)異動。
  25. 如請求項21之非暫時性機器可讀媒體,其中該特定臨限值包含該主要P2P通信頻道之一故障。
  26. 如請求項21之非暫時性機器可讀媒體,其包含使得該計算器件執行以下操作之額外程式碼:將與該主要P2P通信頻道及該一或多個次要P2P通信頻道有關之該連接資料連同該等通信頻道中之每一者之一當前狀態儲存於一儲存器件上。
  27. 如請求項21之非暫時性機器可讀媒體,其中至少一通信鏈路係選自以下鏈路之一或多者:第三代(「3G」)無線蜂巢式鏈路、第四代(「4G」)無線蜂巢式鏈路、Wi-Fi鏈路,及藍芽鏈路。
  28. 如請求項21之非暫時性機器可讀媒體,其中至少一主要或次要P2P通信頻道包括在該第一行動計算器件與該第二行動計算器件之間的一私有網路鏈路。
  29. 如請求項21之非暫時性機器可讀媒體,其中該第一NAT資料包含用於該第一NAT器件之NAT周遊資料及NAT類型資料,且該第二NAT資料包括用於該第二NAT器件之NAT周遊資料及NAT類型資料。
  30. 如請求項21之非暫時性機器可讀媒體,其中建立該一或多個次要P2P通信頻道進一步包含經由該主要P2P通信頻道交換該等次要通信鏈路之連接資料。
TW099132455A 2010-04-07 2010-09-24 用於建立及使用備用通信頻道之裝置及方法 TWI458369B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US32184110P 2010-04-07 2010-04-07
US12/832,013 US8819244B2 (en) 2010-04-07 2010-07-07 Apparatus and method for establishing and utilizing backup communication channels

Publications (2)

Publication Number Publication Date
TW201136372A TW201136372A (en) 2011-10-16
TWI458369B true TWI458369B (zh) 2014-10-21

Family

ID=44761728

Family Applications (1)

Application Number Title Priority Date Filing Date
TW099132455A TWI458369B (zh) 2010-04-07 2010-09-24 用於建立及使用備用通信頻道之裝置及方法

Country Status (9)

Country Link
US (1) US8819244B2 (zh)
EP (1) EP2540060B1 (zh)
JP (1) JP5632068B2 (zh)
KR (1) KR101459864B1 (zh)
AU (1) AU2010350747B2 (zh)
CA (1) CA2794032C (zh)
RU (1) RU2527200C2 (zh)
TW (1) TWI458369B (zh)
WO (1) WO2011126509A1 (zh)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769278B2 (en) * 2010-04-07 2014-07-01 Apple Inc. Apparatus and method for efficiently and securely exchanging connection data
US20110250970A1 (en) 2010-04-07 2011-10-13 Van Os Marcel Methods and systems for providing a game center having customized game details
US8924304B2 (en) 2010-06-04 2014-12-30 Apple Inc. Methods for using unique identifiers to identify systems in collaborative interaction in a mesh network
KR20120081368A (ko) * 2011-01-11 2012-07-19 주식회사 엔씨소프트 모바일 플랫폼에서의 채팅을 통한 게임 초대 방법
JP5787667B2 (ja) * 2011-08-23 2015-09-30 キヤノン株式会社 ネットワーク管理装置及びその制御方法、ならびに通信装置及びその制御方法
GB2494385B (en) * 2011-08-31 2018-06-06 Metaswitch Networks Ltd Transmitting and forwarding data
RU2577782C2 (ru) * 2011-11-11 2016-03-20 Нек Корпорейшн Беспроводное передающее устройство, способ пересылки информации отказа и способ уведомления информации отказа
US20130148493A1 (en) * 2011-12-13 2013-06-13 Avaya Inc. Providing an Alternative Media Channel in a Virtual Media System
US9160780B2 (en) * 2011-12-30 2015-10-13 International Business Machines Corporation System and method for establishing a voice over IP session
KR101914117B1 (ko) 2012-01-18 2018-11-02 삼성전자주식회사 휴대 단말들 간에 무선 랜 링크를 형성하는 방법 및 이를 위한 장치
CN107257403A (zh) 2012-04-09 2017-10-17 英特尔公司 使用交互化身的通信
CN104205171A (zh) * 2012-04-09 2014-12-10 英特尔公司 用于化身生成、渲染和动画的系统和方法
TWI532352B (zh) 2012-05-04 2016-05-01 財團法人資訊工業策進會 無演進封包核心直接通訊系統及其通訊連接方法
US9295090B2 (en) 2012-05-04 2016-03-22 Institute For Information Industry Direct mode communication system and communication attaching method thereof
JP6224591B2 (ja) 2012-08-06 2017-11-01 グリー株式会社 表示システム、同システムにおける表示方法及び表示プログラム
WO2014037277A1 (en) 2012-09-06 2014-03-13 Koninklijke Kpn N.V. Establishing a device-to-device communication session
KR101739666B1 (ko) 2012-10-29 2017-05-24 코닌클리즈케 케이피엔 엔.브이. 디바이스-투-디바이스 통신의 인터셉팅
WO2014076578A2 (en) 2012-11-12 2014-05-22 Calgary Scientific Inc. Framework to notify and invite users to join a collaborative session
US9894153B2 (en) 2012-11-23 2018-02-13 Calgary Scientific Inc. Methods and systems for peer-to-peer discovery and connection from a collaborative application session
US9363165B2 (en) * 2013-03-11 2016-06-07 Qualcomm Incorporated Enhanced call control for directing a content path over multiple connections
TWI509428B (zh) * 2013-05-01 2015-11-21 Ibase Technology Inc 防制系統失效之備援方法
CN103312562B (zh) * 2013-06-08 2016-05-11 北京天融信科技股份有限公司 一种检测p2p流量的方法及装置
US10004109B2 (en) 2013-09-06 2018-06-19 Lg Electronics Inc. Method and apparatus for recovering data unit in wireless communication system
CN103595766B (zh) * 2013-10-23 2016-10-19 北京奇虎科技有限公司 实现扩展应用程序的推送通知的方法及装置
US10129243B2 (en) * 2013-12-27 2018-11-13 Avaya Inc. Controlling access to traversal using relays around network address translation (TURN) servers using trusted single-use credentials
WO2015133819A1 (ko) * 2014-03-04 2015-09-11 삼성전자 주식회사 자동 스위칭 방법 및 장치
US9516480B2 (en) 2014-11-24 2016-12-06 Nexmo Inc. Identity and phone number verification
US10716003B2 (en) 2014-11-24 2020-07-14 Nexmo, Inc. Identity and phone number verification
WO2016084606A1 (ja) * 2014-11-26 2016-06-02 シャープ株式会社 情報通信装置、基地局装置、情報通信プログラム、及び情報通信システム
WO2016101131A1 (en) 2014-12-23 2016-06-30 Intel Corporation Augmented facial animation
CN105141628B (zh) * 2015-09-18 2018-06-29 飞天诚信科技股份有限公司 一种实现推送的方法及装置
EP3073702B1 (en) * 2015-03-27 2017-09-06 Axis AB Method and devices for negotiating bandwidth in a peer-to-peer network
US10979280B2 (en) * 2015-08-12 2021-04-13 Airwatch Llc Managing devices through secondary communication channels
US9860157B2 (en) 2015-09-09 2018-01-02 Sling Media Pvt Ltd Zero configuration approach for port forwarding cascaded routers
TWI595765B (zh) 2015-10-22 2017-08-11 財團法人工業技術研究院 穿透網路位置轉換器之方法及通訊裝置
GB2545654A (en) 2015-12-18 2017-06-28 Sony Interactive Entertainment Inc User-pairing evaluation method and apparatus
WO2017101094A1 (en) 2015-12-18 2017-06-22 Intel Corporation Avatar animation system
US10693921B2 (en) * 2017-11-03 2020-06-23 Futurewei Technologies, Inc. System and method for distributed mobile network
CN112118273B (zh) * 2019-06-19 2023-04-07 杭州萤石软件有限公司 一种数据交互方法、系统及第一客户端
CN110430100B (zh) * 2019-08-27 2021-06-04 中国工商银行股份有限公司 网络连通性探测方法和装置
WO2021237033A1 (en) * 2020-05-21 2021-11-25 Fort Robotics, Inc. Dynamic multihoming management system for reliable data transmission in a robotic system
CN114071434A (zh) * 2020-08-03 2022-02-18 华为技术有限公司 联网方法及联网系统、电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070147399A1 (en) * 2005-11-15 2007-06-28 Arcsoft (Shanghai) Technology Company, Ltd Using Secondary Channels to Communicate IP Addresses for Point-To-Point Communication
US20080287068A1 (en) * 2007-05-14 2008-11-20 Kamran Etemad Multicarrier techniques for wireless systems

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142859A (ja) * 1999-11-17 2001-05-25 Nec Corp 予備論理通信パスホットスタンバイ設定方法、及び、そのプログラムを記録した記録媒体
JP3608503B2 (ja) * 2000-11-08 2005-01-12 日本電気株式会社 携帯通信端末装置
US7110783B2 (en) * 2002-04-17 2006-09-19 Microsoft Corporation Power efficient channel scheduling in a wireless network
GB0308736D0 (en) 2003-04-15 2003-05-21 Hewlett Packard Development Co Providing a node of a peer-to-peer network with access to a resource
JP4260659B2 (ja) * 2004-03-12 2009-04-30 エヌ・ティ・ティ・コミュニケーションズ株式会社 パケットのnat透過機能を有する端末装置及びそのプログラム
US7433700B2 (en) 2004-11-12 2008-10-07 Microsoft Corporation Strategies for peer-to-peer instant messaging
JP2006324783A (ja) * 2005-05-17 2006-11-30 Nippon Telegr & Teleph Corp <Ntt> 接続情報交換方法および端末装置
EP2071809A1 (en) * 2007-12-13 2009-06-17 Alcatel Lucent Method of establishing a connection in a peer-to-peer network with network address translation (NAT)
JP2009246698A (ja) * 2008-03-31 2009-10-22 Cellius Inc 配信方法、配信システム、クライアント端末及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070147399A1 (en) * 2005-11-15 2007-06-28 Arcsoft (Shanghai) Technology Company, Ltd Using Secondary Channels to Communicate IP Addresses for Point-To-Point Communication
US20080287068A1 (en) * 2007-05-14 2008-11-20 Kamran Etemad Multicarrier techniques for wireless systems

Also Published As

Publication number Publication date
JP2013531904A (ja) 2013-08-08
JP5632068B2 (ja) 2014-11-26
EP2540060A1 (en) 2013-01-02
EP2540060B1 (en) 2013-09-18
AU2010350747B2 (en) 2014-01-30
RU2012147266A (ru) 2014-05-20
CA2794032A1 (en) 2011-10-13
WO2011126509A1 (en) 2011-10-13
AU2010350747A1 (en) 2012-10-25
KR101459864B1 (ko) 2014-11-12
RU2527200C2 (ru) 2014-08-27
CA2794032C (en) 2015-04-07
KR20130009827A (ko) 2013-01-23
US20110252144A1 (en) 2011-10-13
TW201136372A (en) 2011-10-16
US8819244B2 (en) 2014-08-26

Similar Documents

Publication Publication Date Title
TWI458369B (zh) 用於建立及使用備用通信頻道之裝置及方法
EP2540059B1 (en) Apparatus and method for matching users for online sessions
US9319467B2 (en) Apparatus and method for efficiently and securely exchanging connection data
US9130820B2 (en) Application programming interface, system, and method for collaborative online applications
KR101408560B1 (ko) 사용자를 온라인 세션에 초대하기 위한 장치 및 방법
KR101397834B1 (ko) 상이한 서비스 제공자들 사이의 피어-투-피어 접속들을 관리하기 위한 장치 및 방법

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent