CN102215121B - Apparatus and method for establishing and utilizing backup communication channels - Google Patents

Apparatus and method for establishing and utilizing backup communication channels Download PDF

Info

Publication number
CN102215121B
CN102215121B CN201010552053.6A CN201010552053A CN102215121B CN 102215121 B CN102215121 B CN 102215121B CN 201010552053 A CN201010552053 A CN 201010552053A CN 102215121 B CN102215121 B CN 102215121B
Authority
CN
China
Prior art keywords
mobile device
service
data
communication channel
communication
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN201010552053.6A
Other languages
Chinese (zh)
Other versions
CN102215121A (en
Inventor
博卡特·S·堂
巴利·A·怀特布克
乔·S·阿布安
郑贤库
杨艳
小罗伯托·加尔恰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer 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
Priority claimed from US12/832,013 external-priority patent/US8819244B2/en
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN102215121A publication Critical patent/CN102215121A/en
Application granted granted Critical
Publication of CN102215121B publication Critical patent/CN102215121B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

An apparatus, method, and machine-readable medium are described for establishing, maintaining and utilizing backup channels in a peer-to-peer ("P2P") network. For example, in one embodiment, each mobile device can establish a primary P2P communication channel with one or more other mobile devices. Once the primary channel is established, each mobile device can use the primary channel to exchange secondary channel connection data and can subsequently open one or more secondary P2P communication channels with the other mobile devices. Upon detecting that the primary P2P communication channel has failed or has degraded below a specified threshold (e.g., a bandwidth or bitrate threshold), one of the secondary P2P communication channels can be automatically promoted to a primary P2P communication channel.

Description

For setting up and utilize the apparatus and method of backup communication channels
The application requires the U.S. Provisional Application No.61/321 that the title of application on April 7th, 2010 is " Apparatus and Method forEstablishing and Utilizing Backup Communication Channels ", 841 priority.
When the prototype of Apple iPhone 4 is when on March 25th, 2010 is significantly stolen from an Apple engineer there, disclosed and claimed invention in this application in the situation that allowing without Apple by disclosing the public prematurely.The application based on U.S.'s priority application before by current significantly theft, not yet submit to.
Technical field
The present invention relates generally to computer network field.More particularly, the present invention relates to a kind of improved, be used to mobile device to set up and utilize the apparatus and method of backup communication channels.
Background technology
A. network address translation (" NAT ")
Large-scale public network, for example internet, is often connected to small-sized private network, and for example those are held by company, Internet Service Provider or even individual family.Due to the character of itself, public network must have the generally distribution of the network address of agreement, i.e. a public address.Because various reasons, the holders of private network are often described private network choice for use private network address, and these addresses are not parts of generally arranging distribution.Therefore,, for the Internet Transmission from private network can pass through public network, need some privately owned/public network address conversion (" NAT ") modes.
An equipment of carrying out NAT operation is transformed into the packet sending from private network the addressing scheme that makes it to defer to public network.Especially, network address translater is replaced original private address and port numbers with its public address and the port numbers of having distributed.Network address translater also changes the received packet that mails to the computer on private network, adopts expection recipient's correct private address and port numbers to replace target public address and port numbers.As used herein, if be applicable in context, term " address " should be interpreted as comprising address and port numbers, as understood by one of ordinary skill in the art.
NAT becomes more general in modern network calculates.A benefit of NAT is exactly the loss that it has slowed down public network address space.For example, in the TCP/IP addressing of using on internet, each comprises the character string of four three, and therefore limited address space is provided.In addition, the specific part of this address space is that particular user or user retain, and this has further consumed the actual number of available address.But if adopt NAT, private network or sub-network can be used Arbitrary Digit destination address, and a public address independent, standard is still only externally provided.This number that makes available address is almost unlimited, because in theory, each private network can be used identical private address completely.
Because the computer on public network be can not determine reality (that is, the privately owned) network address of the computer on private network, so the benefit being provided by NAT is to have increased fail safe.This is because network address translater only provides public address on public network.In addition, this public address can be corresponding to the computer of the arbitrary number on private network.
Different NAT types adopt different level of securitys.For example, adopt " full cone (full cone) NAT ", once home address (iAddr:iPort) is mapped to external address (eAddr:ePort), external host can be by sending packet and send packet to iAddr:iPort to eAddr:ePort arbitrarily.Adopt " restriction taper NAT ", the external host with hAddr address only just can be by sending packet and sending packet to iAddr:iPort when iAddr:iPort once sent packet to hAddr before to eAddr:ePort.The port of external host is incoherent.Adopt " port limit taper NAT ", the external host with hAddr:hPort address only just can be by sending packet and sending packet to iAddr:iPort when iAddr:iPort once sent packet to hAddrr:hPort before to eAddr:ePort.Finally, adopt Symmetric NAT, each request from same iAddr:iPort to special target ip address and port is mapped to unique eAddr:ePort.If same internal host sends packet to different destinations, use different external addresss and port mapping.The external host that only receives packet from internal host just can send packet to internal host.
B. the NAT problem of point to point network
Point-to-point (" P2P ") computing refers to the distributed network structure that comprises following compute node: it is directly available to other network participants that described compute node makes its part resource.Node in P2P network (peer) sets up each other direct access communication channel and simultaneously as client and server, different from traditional model of client/server, in the latter, server provides resource and client computer consumption of natural resource.
Foregoing NAT operates to P2P and connects and caused great number of issues.For example, when one or two node in two nodes is positioned at after foregoing one or more NAT type, between these two nodes, sets up and directly connect the difficulty all the more that becomes.Due to the fact that: Apple iPod for example apple apple and various other equipment (for example, RIM equipment, Palm equipment) etc. mobile device can move frequently between the network with different N AT implementation, so this problem is exacerbated.For example, Apple iPhone tMcan be at Wi-Fi network (for example, 802.11b, g, n network), 3G network (for example, universal mobile telecommunications system (" UMTS ") network, high speed uplink packet access (" HSUPA ") network, etc.), and the upper communication of blueteeth network (being called as personal area network (" PANs ")).Following mobile device can be at other communication channel WiMAX for example, and IMT-Advanced (" IMT "), and the upper communication of senior Long Term Evolution (" LTE "), only take these as example.
Summary of the invention
Described for set up, maintain and utilize device, method and the machine readable media of spare channel at point-to-point (" P2P ") network.For example, in one embodiment, each mobile device can be set up main P2P communication channel with one or more other mobile devices.Once main channel is established, each mobile device just can be used the connection data of this main channel switch secondary channel, and can open subsequently the one or more less important P2P communication channel with other mobile devices.Fault or decline (degrade) have occurred when for example, to assign thresholds (, bandwidth or bit rate threshold) following main P2P communication channel being detected, one in less important P2P communication channel can be main P2P communication channel by automatic lifting.
Accompanying drawing explanation
According to the detailed description of below carrying out by reference to the accompanying drawings, can obtain to better understanding of the present invention, wherein:
Accompanying drawing 1 shows network configuration, and wherein, one group of mobile device and service are at network communication.
The connection data that accompanying drawing 2a-c shows an execution mode exchanges the affairs between (CDX) service, adaptation service and/or invitation service.
Accompanying drawing 3 shows the execution mode of tag data structure.
Accompanying drawing 4 shows the execution mode by the method for CDX service execution.
Accompanying drawing 5 shows the execution mode of the method for being carried out by mobile device.
Accompanying drawing 6 shows the one group of mobile device being connected with secondary communication channel by mainly.
Accompanying drawing 7 shows an execution mode of the mobile device for selecting at main and secondary communication channel.
Accompanying drawing 8a-b shows one group of mobile device by being mainly connected with secondary channel and the network topology of gained.
Accompanying drawing 9 show at main and secondary communication interchannel, select, by a kind of execution mode of computer implemented method.
Accompanying drawing 10 shows a kind of network architecture, and wherein, one group of mobile device and service (comprising directory service and sending out notice service) are at network communication.
Accompanying drawing 11 shows an invitation service in execution mode, the affairs between sending out notice service and connection data exchange (CDX) service.
Accompanying drawing 12 shows an invitation service in execution mode, the affairs between sending out notice service and relay services.
Accompanying drawing 13 shows for set up the execution mode of the relay services of relay connection between two or more mobile devices.
Accompanying drawing 14 shows for determining the execution mode of the NAT compatibility table of NAT compatibility.
Accompanying drawing 15 shows the execution mode of the adaptation service that is used to online application matching shift equipment.
Accompanying drawing 16 shows the execution mode for the method for match user/equipment.
Accompanying drawing 17a-d shows a series of exemplary table of carrying out for match user/equipment and upgrades.
Accompanying drawing 18 shows with Different matching and is applicable to the method that variable carrys out match user/equipment.
Accompanying drawing 19 shows to be shown for the application programming interfaces (API) of various application and for the block diagram of the AP services I with one group of communication for service.
Accompanying drawing 20 shows the API that has for applying, for the execution mode of the game block diagram of the game background program with communication for service and game services module.
Accompanying drawing 21 shows the execution mode that API realizes component software and API Calls component software.
Accompanying drawing 22 shows an execution mode, wherein in operating system, between service and application, carries out API Calls.
Accompanying drawing 23 shows the execution mode of an exemplary computer system framework.
Accompanying drawing 24 shows the execution mode of another exemplary computer system framework.
Embodiment
Described below is for setting up on network, the device, method and the machine readable media that maintain and utilize point-to-point (" P2P ") communication channel main and/or backup.Also described invitation service and adaptation (matchmaker) service, be respectively used to as P2P session invitation user and match user.In addition, relay services has also been described, in order to allow user to set up under given conditions relay connection.Finally, the application programming interfaces (API) of having described application framework and being associated, in order to allow application developer to design application, it can utilize the advantage of the online characteristic of various cooperations described here.
In whole specification, for illustrative purposes, illustrated a large amount of special details and to provide, the present invention has more fully been understood.But, those skilled in the art are understood, the present invention can not rely on described specific detail and implements.In other cases, well-known structure and equipment are not illustrated or shown in block diagram, to avoid fuzzy basic principle of the present invention.
For effectively and safely exchanging the apparatus and method of connection data
As shown in Figure 1, the universe network topological structure of realizing in an embodiment of the invention can comprise respectively one group " client " or " node " mobile arithmetic facility A-D, 120-123, they intercom mutually and communicate by letter with one or more service 110-112 on network 120.Although be shown as an independent network cloud shown in accompanying drawing 1, " network " 120 can comprise various assembly, comprises public network, for example internet and private network, Wi-Fi local area network (LAN) (for example, 802.11n family wireless network or hotspot) for example, ethernet local area network, cellular data net (for example, 3G, Edge, etc.), and WiMAX network, only give some instances.For example, mobile device A 120 can be connected to the Wi-Fi of the family network of network link 125 representatives, the 3G network that mobile device B 121 can be connected to network link 126 representative (for example, universal mobile telecommunications system (" UMTS ") network, high speed uplink packet access (" HSUPA "), etc.), mobile device C 122 can be connected to the WiMAX network of network link 127 representatives, and mobile device D 123 can be connected to the public Wi-Fi network of network link 128 representatives.These mobile devices 120-123 connect based on each local network link 125-128 can be coupled to public network by gateway and/or NAT device (not shown in Figure 1), internet for example, thus make can on public network, communicate by letter between different mobile device 120-123.But if for example, two mobile devices (, identical Wi-Fi network) on identical this locality or private network, described two equipment can directly communicate by that this locality/private network, walk around public network.It is pointed out that basic principle of the present invention is not limited to any specific network types or network topology set certainly.
Each of mobile device 120-123 shown in Figure 1 can exchange with connection data (connection data exchange, CDX) service 110, adaptation service 111 and invitation service 112 and communicate.In one embodiment, these services 110-112 for example can be used as software, in the upper execution of one or more entity arithmetic facilities (server).As shown in Figure 1, in one embodiment, service 110-112 can carry out under the background of for example, larger data, services 100 by same entity (, same data service provider) management, and each in can mobile device 120-123 is accessed by network 120.Data, services 100 can comprise the local area network (LAN) (for example, the LAN based on Ethernet) that connects various types of services device and database.Data, services 100 can also comprise one or more for storing the storage area network (" SAN ") of data.In one embodiment, these database store and managements and each relevant and relevant with the user of other equipment data in mobile device 120-123 (for example, user account data, equipment account data, user's application data, etc.).
In one embodiment, adaptation service 111 can the condition based on one group of appointment makes (collaborative) P2P session that matches to cooperate of two or more mobile devices.For example, the user of two or more mobile devices may be interested in playing specific multi-player gaming.In this case, adaptation service 111 can based on some variablees (for example each player's professional standards, the time of each player's age, matching request, the particular game of requested coupling and according to concrete game and different various variablees) identify one group of mobile device that participates in this game.Such as but not limited to, adaptation service 111 can be attempted the user that coupling has similar professional standards when carrying out particular game.In addition, adult can be mated with other adults, and children can be mated with other children.In addition, adaptation service 111 can also the order based on receiving each user's request be given relative importance value to these requests.Basic principle of the present invention is not limited to any particular type of any specific one group of matching criterior or P2P application.
As described in more detail below, in response to matching request, adaptation service 111 can be served 110 with CDX and be cooperated, to guarantee that the participant of all couplings can receive in effective and safe mode for setting up the necessary connection data of P2P session.
In one embodiment, invitation service 112 is also to adding the mobile device of cooperation P2P session to identify.But under the situation of invitation service 112, at least one in participant can be identified specially by another participant.For example, the user of mobile device A 120 can ask the collaboration session (for example, utilizing user ID or telephone number identification mobile device B) with the user of mobile device B 121 specially.For adaptation service 111, in response to inviting request, invitation service 112 can be identified this group participant and cooperate with CDX service 110, to guarantee that all participants can receive in effective and safe mode for setting up the necessary connection data of P2P session.
As mentioned above, in one embodiment, CDX service 110 can be for for setting up the required connection data of P2P session as center exchange point between two or more mobile devices.Especially, in response to mobile device request, a kind of execution mode of CDX service generates NAT and passes through (traversal) data (being sometimes called as " perforation " data), so that external service and client can communicate by the NAT of each mobile device (that is, process NAT " perforation " is to arrive this equipment).For example, in one embodiment, the outside ip address that CDX service detection and mobile device communication are required and port and provide these information to mobile device.In one embodiment, CDX service also receives and processes the list of the mobile device being generated by adaptation service 111 and invitation service 112, and to being included in each mobile device in list connection data (as the following detailed description) that effectively and safely distributes.
In one embodiment, for example, by adopting procotol (User Datagram Protoco (UDP) (the UDP)) socket of relative lightweight, between mobile device and CDX service 110, communicate.Know as is known to the person skilled in the art, UDP socket connects the dialogue that do not need to shake hands and guarantees reliability, sequence or the data integrity of grouping (packet), so can as the connection of TCP socket, not consume so much packet transaction expense.Therefore,, for the server of answering from the little inquiry (query) of a large amount of clients, the lightweight of UDP, stateless character are useful.In addition, be different from TCP, UDP and multicasting (wherein, be grouped on local network be sent to all devices) and multicast (multicast wherein, is grouped in the subset that is sent to equipment on local network) compatibility.As mentioned above, even if can adopt UDP, also can utilize session key to pass through data to NAT and be encrypted to keep fail safe in CDX service 110.
The low expense adopting from CDX service 110 is different with lightweight procotol, in one embodiment, communicating by letter between the service 111 of mobile device 120-123 and adaptation and/or invitation service 112 set up with intrinsic secure network protocol, Secure Hypertext Transfer Protocol (" HTTPS ") for example, it depends on security socket layer (" SSL ") or Transport Layer Security (" TLS ") connects.With these protocol-dependent details knowing for a person skilled in the art.
Accompanying drawing 2a shows the exemplary serial affairs that can be carried out by CDX server.When describing the operation of execution mode of CDX service, following term has following implication:
Connection data---this is that potential node need to be with other node switching to set up the information of peer to peer session.Described below is the machine-processed execution mode of this information of exchange.
CDX server---in one embodiment, CDX server is certified multicast reflector, and it allows authorized entity exchange arbitrary data.These data are called as payload (payload).
CDX session---CDX session refers to one group of client device that can pass through CDX server and communicate by letter mutually.Each client device as a session part is assigned with CDX label (ticket).Each session has unique CDX session id, and this ID is large integer, can be used for identifying or referring to independent session.
CDX request---from client device, be sent to the request of CDX server.Request generally comprises two parts: CDX label and payload.In this embodiment, payload is the connection data of being crossed by session key.
CDX response---CDX response is when CDX server receives the CDX request from the member of CDX session, by the information of other equipment in " reflection " time CDX session.It is to construct by payload is added to the CDX label stub (stub) of the CDX label using in given CDX request.
CDX label---CDX label tells CDX server how payload to be sent to the member of CDX session.In one embodiment, adopt CDX label key to carry out " signature " to prevent forgery or to distort to it.As shown in Figure 3, in one embodiment, CDX label comprises following information:
Session id 301, it is not encrypted or upset in one embodiment.
Participant's number 302 in session, it is not encrypted or upset in one embodiment.
The participant's of label indication index 303 in session (its in one embodiment not encrypted or upset).
On expired time/date 304, after this, that label is considered to is invalid (its in one embodiment not encrypted or upset).
CDX data punctured 305-306 for each participant in session, is subject to the encryption of carrying out with CDX label key in one embodiment.
Adopt the message authentication code 307 of CDX label key, it guarantees that as " digital signature " label is through authentication.
CDX label stub---the first of CDX label, has deducted CDX data punctured and message authentication code.
Payload---this is the second portion of CDX request and CDX response.Payload refers to the data that client device is expected in CDX session and other equipment communicate.In this embodiment, payload is the connection data of utilizing session key to cross.In one embodiment, CDX server is not decrypted payload, and just allows its unaltered passing through.
Session key---this is the key that client is used for connection data to be encrypted.In one embodiment, this key is unknown for CDX server.In this embodiment, session key is by adaptation service creation, and sends to these clients together with client CDX label separately.
CDX label key---this is for creating CDX label and it being carried out to the key of " signature ".Only have the service of CDX server and generation CDX label to know CDX label key, as described below, this service can be adaptation service and/or invitation service.
The CDX request of boring a hole---for obtain the CDX request of the specialized types of CDX data punctured from CDX server.
CDX data punctured---this is a kind of opaque data spot, and it has been described CDX server and how to its client of initial request, to have sent information.It obtains by send CDX perforation request to CDX server.CDX data punctured must be collected by each client device from CDX session before can generating CDX label.CDX data punctured (being sometimes referred to as " NAT passes through data ") can comprise public ip address and the port of requesting service.
Turn to now accompanying drawing 2a, in one embodiment, mobile device A 120 and mobile device B 121 can carry out collaboration applications, for example multi-player gaming or collaborative chat session, and these application need to be connected with the P2P of one or more other computing equipments.At 201a, mobile device A 120 transmits CDX perforation request to CDX server 110.CDX server responds by CDX data punctured at 202a.In one embodiment, data punctured comprises public ip address and the port of mobile device A and/or for example bores a hole, by required any other data (, having defined the NAT categorical data of the NAT type of mobile device A) of NAT of mobile device A.At 201b and 202b, respectively mobile device B is carried out to similar affairs.
Then, at 203a and 203b, mobile device A and B send the matching request that comprises CDX data punctured to adaptation service, and any additional matching criterior (being described below).In this stage, mobile device A can start to set up P2P with B and be connected needed connection data.For example, these affairs that can connect by the network of use such as standard foundation (" ICE ") affairs (for example,, by the NAT service of passing through) realize.But cardinal principle of the present invention is not limited to for determining any specific mechanism of connection data.
In one embodiment, once adaptation service 111 finds to have one group of client device of the criterion of coupling, it will generate unique CDX session id, unique CDX label and unique session key for each member in CDX session.In one embodiment, adaptation service 111 can be used unique CDX label key for CDX label encryption CDX data punctured.Then, at 204a and 204b, adaptation service can be to mobile device A and B transmission their CDX label and session key.
Mobile device A receives CDX label and session key and its previous definite connection data of use session key, makes payload.In one embodiment, mobile device A builds CDX and asks by the payload of structure being appended to CDX label.At 205a, mobile device A sends CDX and asks to CDX server 110.Mobile device B also carries out identical operation and sends a request to CDX server at 205b.
At 206a, CDX server 110 receives CDX request, and inspection tag is effectively and has mandate (for example,, based on message authentication code 307) to guarantee it.If CDX label is invalid, just abandon described request.In one embodiment, then CDX server is used CDX label key to be decrypted the CDX data punctured group being included in CDX label.In one embodiment, CDX label key can comprise the termination time/date that can transmit together with described label.CDX service 110 and adaptation service 111 can store the CDX label key for encrypt/decrypt that two (or a plurality of) are different-first be current that activated and second be will to be activated when arriving first termination time/date.Once receive label, CDX service 110 just can be read termination time/date and be determined which label key of use.When CDX label key is expired, each in CDX service 110 and adaptation service 111 can generate new label key (it is to cross after date as the key next using at current label key).In one embodiment, CDX service 110 is carried out identical key schedule with the consistency of assurance and two label keys with adaptation service 111.For example, such as those, the technology for well-known RSA SecurID authentication mechanism is used in fixed intervals and generates new authentication code.In one embodiment, new CDX label key per diem generates.But cardinal principle of the present invention is not limited to any for generating the concrete mechanism of CDX label key.
As shown at 206B, can carry out identical operation for mobile device B.CDX server can build CDX response and use CDX data punctured to send CDX from CDX request and respond to the participant's (be sent to mobile device B and be sent to mobile device A at 207b at 207a) CDX session.
Mobile device B receives CDX response 207a from CDX server.Client device B checks that CDX label stub can mate the session id of its CDX label to guarantee session id.Then mobile device B can be used session key deciphering payload, to generate the connection data from mobile device A.Then mobile device B is used the process that starts to set up P2P session from the connection data of mobile device A.In one embodiment, these comprise IC standard E affairs.But cardinal principle of the present invention is not limited to any for setting up the concrete mechanism of P2P communication.
As mentioned above, in one embodiment, mobile device A and B set up Secure Hypertext Transfer Protocol (" HTTPS ") session and adaptation service 111 communicates (for example, adopting HTTPS request/response transaction) and set up UDP socket and CDX service communicates.Matching request 204a, 204b can comprise NAT type and be previously the definite data punctured (for example, public ip address and port) of each mobile device separately.In comprising the execution mode of multi-player gaming, each matching request (for example can be identified in player on each mobile device, use unique player ID code), each user expects the game of playing, the number that adds the player of game, and/or other variable set ups relevant to expectation game.By way of example, rather than restriction, the Game Setting variable relevant to game (for example can comprise difficulty level, simply, common, difficulty), user's age (for example, " be less than 13 years old "), the subregion of game (for example, the 2nd grade), and/or player's professional standards (for example, expert, initial, middle rank).As described below, these variablees are sometimes as game " bucket (bucket) " and by using unique " bucket ID " to identify.Each game can comprise that different bucket ID gathers to identify different Game Setting variablees.
In one embodiment, mobile device B sends and replys (acknowledgement) at 208a and 209a.Similar, replying at 208b and 209b of mobile device A is sent out.If replying after the time period of appointment of mobile device A and B also do not receive, this connection data 207a can be resend to mobile device B 212.CDX service 110 or mobile device A 120 can start this re-transmission.
Accompanying drawing 2b shows more detailed example, and wherein, three different mobile device 120-122 consult P2P link with CDX service and adaptation service 111.Accompanying drawing 2b also shows two other services that are used for connecting by mobile device 120-122: for determining the NAT of the NAT type service of passing through 291, with be used to each mobile device determine the NAT of complete connection data pass through service 290 (for example, utilizing ICE connection data affairs).But it should be noted that not necessarily and will observe cardinal principle of the present invention by the service being separated from each other.For example, in an alternative execution mode, each the performed NAT that serves 290-291 by these passes through function and can directly be integrated in CDX service 110 and/or adaptation service 111.Similarly, by two NAT, passing through service 290-291 performed function can be integrated in a NAT and pass through in service.In a word, at the discrete concrete function shown in accompanying drawing 2b, be not that cardinal principle of the present invention is necessary.
Turn to now the detail of accompanying drawing 2b, 220, mobile device A sends NAT type requests to the NAT service of passing through 291.As response, the NAT service of passing through 291 can adopt and comprise that the various known technologies of realizing a series of affairs determine the NAT type of being used by mobile device A.For example, the NAT service of passing through 291 can attempt opening different IP address and the port on the NAT of mobile device A, and uses different IP/ port combination and mobile device A to communicate by these ports.In such a way, the NAT being adopted by mobile device A can be categorized as a kind of (for example, full cone, restriction taper, port limit taper, symmetry) in previously described NAT type, or optional NAT type.Then this information be provided for mobile device A 120, as shown in the figure.
221, mobile device A 120 is used CDX service 110 to start NAT and passes through request.As response, CDX service 110 can be read for the public ip address of this request and common port slogan and this information is sent it back to mobile device A 120.As mentioned above, if equipment after NAT, its public port and IP address will be different from respectively its privately owned port and IP address.Therefore, depend on adopted NAT type, public ip address and port can be for " perforation " by NAT device, to arrive mobile device.
222, mobile device A 120 sends matching request 222 to adaptation service 111.As mentioned above, in one embodiment, mobile device A is used Secure Hypertext Transfer Protocol (" HTTPS ") session communicate by letter with adaptation service 111 (for example, use HTTPS request/response transaction).Matching request can comprise NAT type and previous for example, for the definite data punctured of mobile device A 120 (, public ip address and port).In relating to the execution mode of multi-player gaming, the player's that matching request can identify game that player's (for example, using unique player ID code), these users on mobile device wish to play, add game number and/or other relevant to required game variablees (2a is described above with reference to accompanying drawing) that arranges.
At 223-225, for mobile device B 121 carries out one group of affairs relevant to affairs 220-222; At 226-228, for mobile device C 122 carries out one group of affairs relevant to affairs 220-222.Therefore,, after affairs 228, adaptation service 111 has received matching request for whole three mobile device 120-122.In this concrete example, these matching request make mobile device 120-122 be matched with specific collaboration session, for example multi-player gaming (for example, the user of these mobile devices may select to have the identical game of same or analogous variables collection, thereby causes the coupling by adaptation service 111 execution).
The data that adaptation service 111 use are included in each matching request generate label A, label B, label C, and label A is sent to mobile device A 229; Label B is sent to mobile device B 230; Label C is sent to mobile device C 231.Although not shown in accompanying drawing 2b, adaptation service 111 can utilize sending out notice service to come to mobile device A, B and C, to push label A, B and C (for example, the service of the sending out notice shown in accompanying drawing 11-12 1050) respectively.The execution mode that is used for the tag data structure of label A, B and C is described with reference to accompanying drawing 3 in the above.
232, mobile device 120 and the NAT service of passing through 290 communicates by letter to determine its connection data.In one embodiment, this can comprise IC standard E connection data affairs.As already mentioned, connection data can comprise for mobile device A 120 public/private IP address, port and NAT type.
Mobile device A 120 appends to label A by its connection data, and 233, label A is sent to CDX service 110 together with connection data.In one embodiment, CDX service is processed label A according to mode described above, and 234, connection data (can be encrypted) is sent to mobile device B 121 and mobile device C 122.For these affairs, CDX service 110 can utilize the included NAT for mobile device B and C of label A to pass through data.
At 236-238, utilize label B to carry out one group of affairs relevant to affairs 232-234, at 238-240, utilize label C to carry out one group of affairs relevant to affairs 232-234.Therefore,, after affairs 240, connection data is shared between each mobile device 120-122.By using connection data, P2P session is between mobile device A and B, between mobile device A and C and set up between mobile device B and C.
As accompanying drawing, 2c is shown, and invitation service 112 also can serve for 110 (both can replace also can being increased to adaptation service 111) for CDX.In one embodiment, invitation service 112 is processed the invitation request connecting for the P2P with concrete mobile device and/or user.Invitation service 112 can be used as stateless service and realizes (that is, not fixing the service of current transaction status between each mobile device).
Turn to this concrete example, 250, mobile device A 120 sends NAT type requests to the NAT service of passing through 291.As response, the NAT service of passing through 291 can be used various known technology for determining the NAT type (wherein some are described) being adopted by mobile device A in the above.251, mobile device A 120 is used CDX service 110 to initiate NAT and passes through request.As response, CDX service 110 can be read for the public ip address of this request and common port slogan and this information is sent it back to mobile device A 120.As mentioned above, if equipment after NAT, its public port and IP address will be different from respectively its privately owned port and IP address.Therefore, depend on adopted NAT type, public Ip address and port can be for boring a hole by NAT device to arrive mobile device.
The same with the situation of adaptation service, in one embodiment, each mobile device is used Secure Hypertext Transfer Protocol (" HTTPS ") session and adaptation service 112 to communicate (for example, using HTTPS request/response transaction).
252, mobile device A 120 sends and invites request to invitation service 112, and it comprises that the NAT of mobile device A passes through data (for example, NAT type, public ip address/port).In the execution mode that utilizes sending out notice service (more detailed description below), the request of inviting can also comprise the propelling movement token of mobile device A.Invite request 252 can also comprise for identifying the identification code of one or more other user/equipment---be the user of mobile device B 121 and C 122 in this case.Can use various identity type.For example, under the situation of multi-player gaming, identification code can comprise the player ID code for concrete game.Under audio/video chat sessions situation, identification code can comprise telephone number or unique ID, and this ID is for identifying one or more users of " friend " list of the user of mobile device A.
In one embodiment, invitation service 112 reads identification code from invite request, and carries out and search to locate each mobile device B and C in registration database (not shown).In an embodiment, each mobile device B and C register in Push Service, to receive sending out notice from invitation service 112.Like this, in this embodiment, invitation service 112 is used sending out notice service 253 and 254, invitation request to be pushed to mobile device B 121 and mobile device C 122 respectively.Other details relevant to sending out notice service below (referring to, for example, accompanying drawing 11-12 and specification relevant portion) and sending out notice above-mentioned application in describe.
In one embodiment, invite request 253 and 254 to comprise the tag data structure of describing with reference to accompanying drawing 2a-b shown in Fig. 3 and above-mentioned.Especially, the label that is sent to mobile device B comprises for identifying the encrypted list of mobile device A and B, and the label that is sent to mobile device C comprises for identifying the encrypted list of mobile device A and C.In one embodiment, because invitation service 112 may also not have the NAT of mobile device B to pass through data, " label " at 253 places can comprise identifying other information of mobile device B.For example, as below in conjunction with utilized relay services and sending out notice service (referring to, for example, accompanying drawing 11-12), described in execution mode, " label " at 253 places can comprise that the NAT for mobile device A passes through the ID code of data, device A, the ID code of the propelling movement token of device A, equipment B and for the propelling movement token of mobile device B.The information of same type can provide for mobile device A and C 254.
255, mobile device B can communicate by letter to determine its NAT type with the NAT service of passing through 291, and 256, mobile device B can serve 110 with CDX and communicate by letter to determine that its NAT passes through data (for example, public ip address/port).257, mobile device B sends invitation response to invitation service 112, and its identification code that comprises mobile device A and mobile device B, NAT pass through data and (if adopting sending out notice service) for the propelling movement token of mobile device A and B.258, mobile device B can be by communicating by letter to obtain its current connection data with the NAT service of passing through 290.259, mobile device B sends to CDX service 110 by its label (label B) together with its current connection data.As response, CDX service 110 is processed this label and connection data is forwarded to mobile device A120 according to mode recited above.
Once receive the invitation response of mobile device B, invitation service 112 just can generate for the encoded tag of mobile device A and 260, label is sent to mobile device A.In one embodiment, label comprises that NAT passes through data, NAT type and for the propelling movement token (if having adopted sending out notice service) of mobile device A and B." label " described with reference to accompanying drawing 2c with can be identical or different for the data structure of described " label " about adaptation service 111.For example, different from " label " that above-described generation is encrypted, invitation service 112 can generate unique session id simply to identify the invitation session of each mobile device.
261, mobile device A is by communicating by letter and obtain its current connection data with the NAT service of passing through 290.Then mobile device A can add its connection data to label, and 262, label and its connection data is sent to CDX service 110.CDX service 110 is processed this label and the connection data of mobile device A is forwarded to mobile device B according to mode recited above.Finally, 263, the mobile device A connection data that use exchanges with B is opened P2P and is connected.As described below, in the inconsistent situation of the NAT of mobile device A and B type, can realize the communication between mobile device A and B by relay services.
At 264-272, mobile device C 122 and mobile device A can carry out a series of affairs and set up P2P and be connected, as described mobile device B and A in 255-263.Especially, 264, mobile device C 122 communicates by letter to determine its NAT type with the NAT service of passing through 291, and communicates by letter to determine that with CDX service 110 its NAT passes through data (for example, public ip address/port) 265.266, mobile device C sends invitation response, and its NAT type, NAT that comprises mobile device C and mobile device A passes through data and pushes token (if having adopted sending out notice service).267, mobile device C passes through P2P service 290 by NAT and obtains its current connection data, and 268, mobile device C appends to its connection data label C and label C is sent to CDX service 110.CDX service 110 is processed this label and the connection data of mobile device C is forwarded to mobile device A120 according to mode recited above.
269, mobile device A 120 receives the invitation response of mobile device C from invitation service 112, and it comprises that NAT type, the NAT of mobile device A and C pass through data and push token (if having adopted Push Service).270, mobile device A obtains its current connection data from the NAT service of passing through 290, and its current connection data is appended to label A, and 271, label A is sent to CDX service 110.As a kind of selection, may not need affairs 270, because mobile device is determined its connection data in affairs 261.CDX service 110 is processed label A and the connection data of mobile device A is forwarded to mobile device C according to mode recited above.Finally, 272, the mobile device A connection data that use exchanged with C is set up direct P2P and is connected 272.
In one embodiment, invitation service 112 and adaptation service 111 can depend on sending out notice service (not shown) for to mobile device propelling data.For example, at accompanying drawing 2c, invite request 253 and 254 to push to mobile device B 121 and C 122 by this sending out notice service.Similarly, at accompanying drawing 2a, label A and B can push to mobile device A 120 and B 121.In one embodiment, when mobile device is activated on network, it can be registered in its propelling movement token can be in the center LOGIN directory of sending out notice service access.In one embodiment, this LOGIN directory is associated the user ID or the telephone number that are subject to cryptoguard with propelling movement token.If push token, can in catalogue, identify, sending out notice service can be used propelling movement token that notice is pushed to mobile device.In one embodiment, sending out notice service be by the application's assignee design, and the sending out notice service that for example relates to above in the Apple sending out notice service (" APNS ") that is described.But it should be noted that the unessential sending out notice service of the embodiments of the present invention shown in Fig. 2 a-c.For example, CDX service does not need sending out notice to carry out its operation, as described here.
Accompanying drawing 4 shows a kind of method, can serve 110 by CDX and carry out to exchange connection data; Accompanying drawing 5 shows a kind of method, can be carried out to exchange connection data and be set up P2P by mobile device to connect.Some aspect of these methods is described with reference to accompanying drawing 1-2c in the above.Especially, these methods can be carried out in the environment of the network configuration shown in Fig. 1-2 c, but they are not restricted to such structure.In one embodiment, these methods realize with the form of program code, when it is executed by processor, can cause the operation of these methods to be performed.When described program code is moved by processor, it can be stored on the computer-readable medium of random asccess memory (" RAM ") for example.Processor can be general processor (for example, core tMprocessor) or application specific processor.But these methods also can be by carrying out by the combination in any of hardware, software and firmware.In addition, program code can be stored in for example non-volatile memory device of hard disk drive, CD (for example, digital video disc or compact-disc), or for example on the nonvolatile memory of flash memory device.
Turn to now method shown in Figure 4,401, receive the NAT request of passing through that---is " mobile device A " in this example---for special mobile device (being sometimes known as " perforation " request).402, generation NAT passes through response concurrent and delivers to mobile device A.In one embodiment, generate NAT and pass through current public ip address/port and/or the NAT type that response can comprise definite mobile device A.
Can generate subsequently for the label of mobile device A and generate entity (for example adaptation service 111 described above or invitation service 112) by label and encrypt.403, be received as the label (" label A ") that mobile device A generates, it comprises that NAT passes through data (for device A and one or more other equipment) and for the connection data of device A.404, adopt message authentication code to authenticate this label, and employing is used for that with label generation entity label is encrypted to identical CDX label key data punctured is decrypted.As mentioned above, in one embodiment, adopt the expired time/date being associated with CDX label key to identify correct CDX label key.
405, the NAT extracting for mobile device passes through data.406, use NAT to pass through data the connection data for mobile device A is sent to each node.407, receive the receipt from each node.If determine and do not receive receipt from whole nodes 408, just 409, the connection data of mobile device A is retransmitted to the not yet node of response.When all connection data all obtain receipt, in 408, to determine, described method stops.
In one embodiment, can carry out the method shown in accompanying drawing 4 for each node being included in P2P affairs, to guarantee that each node that receives connection data needs to set up P2P connection.
Accompanying drawing 5 shows a kind of method that can be carried out by mobile device according to the embodiment of the present invention.501, send NAT and pass through request, 502, receive NAT and pass through response.As mentioned above, the NAT being included in response passes through public port/IP address that data can comprise requesting service.503, send and comprise the matching request that NAT passes through data.Can generate subsequently for the label of mobile device and encrypt by the label generation entity of for example adaptation service 111 described above or invitation service 112.As the optional mode to above-mentioned tag data structure, adaptation service 111 and/or invitation service 112 can utilize unique session id to identify simply each participant.
504, can receive label; 505, for the connection data of mobile device, be affixed to label; And 506, send label and connection data.507, reception is set up P2P with one or more other nodes and is connected required connection data.508, receive and show that one or more other nodes have received the receipt in the connection data of 506 transmissions.510, if do not receive whole receipts, connection data is retransmitted to the mobile device that does not receive receipt from it.If determine and receive whole receipts 509, the connection data in 507 receptions is used to set up P2P session with other mobile devices.
For setting up and utilize the apparatus and method of backup communication channels
Current mobile device can be communicated by letter in various communication channel.For example, Apple iPhone tMcan be at Wi-Fi network (for example, 802.11b, g, n network), 3G network (for example, universal mobile telecommunications system (" UMTS ") network, high speed uplink packet access (" HSUPA ") network, etc.) and the upper communication of blueteeth network (being called as personal area network (" PAN ")); Following mobile device can for example,, in other the upper communication of communication channel (WiMAX, IMT-Advanced (" IMT "), and senior Long Term Evolution (" LTE ")), only be take these as example.In operation, existing mobile device is selected main (primary) communication channel from one group of available channel.For example, if there is available Wi-Fi to connect, mobile device is configured to select Wi-Fi to connect conventionally; If Wi-Fi is disabled, select cellular data to connect (for example, UTMS connects).
In an embodiment of the invention, one group of mobile device adopts aforesaid IC standard E connection data exchange and/or carrys out mainly point-to-point (" P2P ") communication channel of model by connection data switching technology.Then mobile device can exchange connection data to set up one or more secondary communication channels on this main channel, if when any one main channel breaks down, described secondary communication channel is used as spare channel.In one embodiment, by periodically send " heartbeat (heartbeat) " grouping on these channels, make secondary communication channel keep open by NAT fire compartment wall.
As used herein, communication " channel " refers to two whole network paths between mobile device, and communication " link " refers to concrete connection theing adopt in communication path.For example, if mobile device A adopts Wi-Fi to be connected to internet, equipment B employing 3G is connected to internet, and by Wi-Fi link and 3G link, the two limits " channel " between device A and equipment B; Device A has Wi-Fi communication " link ", and equipment B has 3G communication " link ".Like this, if device A from Wi-Fi link switching to 3G link, " channel " between device A and equipment B just changed, although in fact the 3G link of equipment B still remains unchanged.
Referring now to accompanying drawing 6, the concrete example that mobile device is set up main and secondary communication channel is described.But it should be pointed out that cardinal principle of the present invention is not limited to the set of particular communication links and communication channel shown in Figure 6.
In accompanying drawing 6, mobile device A 601 can be connected to network 610 (for example, internet) with the communication link 606 with NAT device 612 by having the communication link 605 of NAT device 611.Similarly, mobile device C 603 can be connected to network 610 with the communication link 610 with NAT device 614 by having the communication link 609 of NAT device 613.Only, as example rather than restriction, communication link 605 and 609 can be 3G communication link, and communication link 606 and 610 can be Wi-Fi communication link.
Therefore, in this example, between mobile device A and mobile device B, can set up four different communication channels: the first channel is used link 605 and 609; Second channel is used link 605 and 610; The 3rd channel is used link 606 and 609; The 4th channel is used link 606 and 610.In one embodiment, mobile device A and B select a main communication channel of conduct in these channels based on priority scheme, and three remaining channels are chosen as to backup communication channels.For example, a priority scheme can be to select the channel with maximum bandwidth to remain channel as secondary channel as main channel use.If two or more channels have identical bandwidth, this priority scheme can comprise the channel (supposition user charges are used one or more channels) of selecting tool cheap.Alternatively, this priority scheme can be also to select the most cheap channel as main channel, and if the cost of each channel is identical, selects to have the channel of maximum bandwidth.When meeting cardinal principle of the present invention, can realize various priority scheme.
Mobile device A 601 and C 603 can set up main communication channel (for example,, by exchanging connection data by CDX service 110) by above-mentioned technology.Alternatively, mobile device 601 and 603 can operative norm network be connected foundation (" ICE ") affairs and exchanges connection data.No matter how main channel is set up, once set up, mobile device A 601 and C 603 can be just secondary communication channel switch connection data in main communication channel.For example, if main communication channel shown in Figure 6 comprises communication link 606 and communication link road 609, this link can be utilized for the secondary communication channel switch connection data that comprises communication link 605 and 609 after foundation.In this example, in the main cocommutative connection data of communication channel, can comprise that the NAT for NAT 611 and NAT 613 passes through data and NAT type, comprises the public and private IP address/port for each mobile device.
After secondary communication channel has been established, adopt heartbeat to divide into groups to make them to keep open.For example, device A can periodically send little " heartbeat " grouping to equipment C, and/or device A can be periodically to little " heartbeat " grouping of equipment C transmission, to guarantee keeping open (NAT is the close port due to dormancy (inactivity) often) for the nat port of secondary channel.Heartbeat grouping can be there is no the UDP of payload grouping, but cardinal principle of the present invention is not limited to any concrete packet format.Heartbeat grouping can be to have the UDP grouping of Urine scent type field at their payload header, and can comprise selectable additional formats information, and this information includes but not limited to time-to-live (time-to-live) value of channel.
Shown in accompanying drawing 7, each mobile device 601 storage service data structure 710 (for example, form, text, database, etc.), this data structure comprises the list of main and secondary communication channel.Independent entry is provided to each communication channel, this entry comprises utilizes the needed connection data of that channel (for example, privately owned/open IP address, NAT type etc.), and the current state of that channel (for example, main, less important 1, less important 2, etc.).
In one embodiment, communication interface 701 and 702 is used to by communication link 605 and communication link 606, communicate respectively.Fault detection module 705 can be carried out on mobile device 601, and to detect, when specific communication interface/link fault has occurred or declined to below assign thresholds.As response, can read mainly/less important connection data 710 of link management module 706, to be promoted to main channel by the secondary channel with limit priority.The relative importance value of secondary channel can adopt with the above-mentioned identical criterion for main channel and realize (for example, based on bandwidth, cost, reliability, etc.).Once select secondary channel, link management module 706 can send link failure indication to the link management module on other mobile devices, and those equipment of instruction are promoted to main communication channel by this secondary communication channel.Then those equipment can bring into use the connection data being associated with selected main channel.
In one embodiment, do not need main communication channel occur thoroughly " fault " just force handoff to secondary communication channel.For example, in one embodiment, for example, if main communication channel enough declines (, lower than specific bandwidth, bit rate or reliability thresholds), can realize as mentioned above and switch to secondary channel.In one embodiment, switching to secondary channel only can support for example, to be just performed than the current better performance of main channel (, bandwidth, bit rate or reliability) time at secondary channel.
Accompanying drawing 8a shows and identical network configuration shown in Figure 6, and the mobile device B602 increasing is connected directly to network 610 and connects 620 by private network and is connected to mobile device C 603.Private network 620 can be for example the Bluetooth PAN link between equipment B 602 and equipment C 603.From this example, can see, from main channel, switch to secondary channel and can change significantly network topology.For example, as shown in accompanying drawing 8b, if the main channel 801 for mobile device comprises link 609 (causing the direct connection between device A, B and C), and secondary channel comprises private network 620, network topology can change into as shown in accompanying drawing 8c because the sole mode that device A and C are used private network to communicate by letter is to pass through equipment B.Although this just has the simple case of three equipment, also can use the much more equipment of number, when can cause various network topology structure when main and secondary communication interchannel switch.
Shown in Figure 8 for setting up and keep an execution mode of the method for secondary channel.In one embodiment, the method can be carried out by the link management module 706 on each mobile device.But the method is not limited to any specific equipment configuration.
901, select main P2P communication channel.As mentioned above, main channel can be selected by the priority scheme based on predetermined.For example, some communication channel type can have precedence over other communication channel types.Channel also can for example, have relative importance value based on variable (bandwidth, use cost and/or reliability).
902, set up backup P2P communication channel.In one embodiment, this by through main communication channel and between all mobile devices Share interlinkage data realize.903, spare channel is held.In one embodiment, this comprises periodically for example, by these secondary channel transmission data (form of, dividing into groups with periodic heartbeat).
904, for example, if main P2P channel (breaks down, because the communication link of specific mobile device goes offline or this mobile device leaves the scope of this communication link), 905, these mobile devices are promoted to main channel by the spare channel with limit priority.In one embodiment, this comprises by the mobile device with faulty link, on secondary channel, the notice of its link failure is sent to other equipment.Finally, 906, make this spare channel become main channel, processing procedure is got back to 902 (wherein, any additional spare channel can be found and be added into described priority scheme).
Invitation service is used for setting up the apparatus and method of point-to-point (P2P) communication channel
As shown in Figure 10, except CDX service 110, adaptation service 111 and invitation service 112 (their some execution modes as mentioned above), an embodiment of the invention can comprise registration/directory service 1052, sending out notice service 1050 and relay services 1051.As mentioned above, in one embodiment, invitation service 112 and/or adaptation service 111 can be used registration/directory service 1052 chartered mobile devices of identification and use sending out notice service 1050 to these mobile device propelling datas.In one embodiment; when mobile device is activated on network; it is registered " propelling movement token " (being sometimes referred to as " notification service account identification symbol " in sending out notice service) to the database of being safeguarded by registration/directory service 1052, this is that the user ID or the telephone number that by propelling movement token is associated with, are subject to cryptoguard are realized.If push token, be identified (for example, by utilizing user ID to carry out inquiry) in LOGIN directory, sending out notice service 1050 can be used propelling movement token that sending out notice is sent to mobile device.In one embodiment, sending out notice service is by the application's assignee design, and the Apple sending out notice service (" APNS ") that is for example described in related sending out notice application in the above.
Accompanying drawing 11 shows an embodiment of the invention, and wherein, sending out notice service 1051 is used to set up direct P2P between two mobile devices and connects, and accompanying drawing 12 shows by relay services 1051 and sets up the execution mode that P2P connects.As mentioned below, for whether, by relay services 1051, set up the feasibility (for example,, based on NAT compatibility issue) that decision that P2P connects can be based on setting up direct P2P and connecting between these mobile devices.
Turn to now accompanying drawing 11,1101, mobile device A 120 sends and invites to mobile device B 121, invites mobile device B for example, to P2P communication session (, cooperation video-game, P2P Video chat etc.).In one embodiment, this invitation comprises user ID code, and this user ID code is identified mobile device B 121 (and/or user of mobile device B) in the environment of specific online application.For example, user ID code can be the player ID for specific multiplayer P2P game, and can adopt for example form of universal unique identifier (UUID).Alternatively, in some embodiments, ID code can be the telephone number of mobile device B 121.The multi-player gaming that game ID code can be used for mobile device A to invite mobile device B to add is identified.Bucket ID can be used for identification for the configuration (if the application is for as described in adaptation service) of that game.
Invite 1101 can also comprise that pass through/connection data of NAT for identifying the ID code of mobile device A 120 and being associated with mobile device A (for example, for mobile device A public/private IP address and port, and for the NAT type of the NAT device of device A).Pass through/connection data of NAT or NAT type can before inviting request 1101, be determined by mobile device A (for example, by NAT pass through, NAT type and connection data affairs, for example described above with reference to accompanying drawing 2a-c).As mentioned above, invite request 1101 can take the form of HTTPS request.In addition, for higher fail safe, invite request 1101 can comprise the client certificate by preassigned Certificate Authority side (authority) signature.
No matter for identify mobile device B ID code particular type how, ID code is received by invitation service 112,1102, invitation service 112 can be carried out and search to identify notification service account identification symbol in directory service 1052 (not shown in Figure 11), and this identifier is for example for the propelling movement token to mobile device B sending out notice (" pushing token B ").In one embodiment, search operation can be carried out several inspections to determine whether this invitation should be allowed to.First, the propelling movement token (push token A) that it can be identified for identification code (" ID-A ") and the device A of device A is registered incidence relation in directory service database.Search operation 1102 can also confirm the user of mobile device A to be allowed to invite the user of mobile device B, and (for example, the user of mobile device B can specify those other users of the friend who is only registered as B could invite B; Or it is all unallowed also can specifying any invitation).In one embodiment, if any one failure in these inspections is invited and is cancelled, invitation service 112 is returned to mistake to mobile device A.
Although described in this embodiment " propelling movement token ", it should be noted that cardinal principle of the present invention is not limited to use " propelling movement token " or other are any for authenticating and to the specific data structure of mobile device sending out notice.
In one embodiment, after propelling movement token is identified, invitation service 112 can generate safe disposable " session token ", and this token is endowed this invitation session and identifies this session for the further affairs whole.Then the copy of this session token is sent back to mobile device A 120 and is sent to mobile device B together with this invitation request.In one embodiment, this session token is used together with foregoing tag data structure, and in another embodiment, only uses session token.
1103, invitation service 112 sends to sending out notice service 1050 request of propelling movement.In one embodiment, push request and can comprise that the NAT for mobile device A passes through the ID code of data, device A, pushes the ID code of token A, equipment B and push token B.In one embodiment, these information can be encapsulated in " label " data structure and be encrypted as mentioned above.In another embodiment, data are sent out simply together with invitation session ID.
Because the mobile device B 121 in this example registers sending out notice service 1050,1104, sending out notice service 1050 can be located and be pushed to mobile device B 121 request of inviting.The invitation 1104 pushing can comprise that the NAT of session token, mobile device A passes through the ID code of data/connection data, mobile device B.In response to this, invite request, mobile device B can be by calling to the NAT service of passing through or CDX service 110 network information (such as pass through/connection data of NAT, NAT type etc.) of determining it as mentioned above.
1105, mobile device B accepts this invitation.Accept (1105) and can adopt the form that the HTTPS of invitation service 112 is called, and can comprise the client certificate (mentioning while relating to invitation request above) by preassigned Certificate Authority side signature.In one embodiment, accept (1105) and can comprise the ID code for mobile device A and B, and for pass through/connection data of the NAT of mobile device A and B and/or NAT type.Accept (1105) and can also comprise propelling movement token and/or the session token for mobile device A and B.In one embodiment, accept (1105) and can also comprise such indication: about it, whether be the retry of attempting from the direct connection of breaking down before this.But, in another embodiment, accept (1105) and do not comprise this retry indication.But when the P2P connection trial of breaking down being detected, one in two mobile devices can send special " relaying invitation " to invitation service 112.As response, a series of relaying affairs of describing below with reference to accompanying drawing 12 (starting from 1201) can be directly initiated in this service.
1106, invitation service 112 can be carried out compliance check, to determine whether feasible the direct P2P between mobile device A and B connects.For example, in one embodiment, if the acceptance (1105) receiving from mobile device B shows that it is to attempt the retry of (or attempting from specifying number a direct connection of breaking down before this) from the direct connection of breaking down before this, invitation service can be reached a conclusion: it is infeasible that direct P2P connects.Invitation service 112 can be relatively for the NAT categorical data of mobile device A and B, to determine whether the NAT device of mobile device A and B supports direct P2P to be connected.The combination of more known NAT types is incompatible to setting up P2P connection.For example, full cone NAT can be used for except close/with other any NAT types the NAT of fire compartment wall, set up direct P2P to be connected.By contrast, Symmetric NAT can only be used for setting up direct P2P with full cone NAT and is connected.Combine in an embodiment of the invention in the compatible form 1400 of the feasibility of various NAT types NAT shown in Figure 14 and illustrate, wherein, each row (for example represent a mobile device, mobile device A) NAT type, each row represents the NAT type of another mobile device (for example, mobile device B).The NAT type of the row and column that " 1.0 " expression in unit is associated is compatible, and " 0.0 " represents that these NAT types are incompatible.
In one embodiment, if compliance check 1106 determines that it is infeasible that direct P2P connects, invitation service 112 can send relaying search request 1201, as with reference to the accompanying drawings as described in 12.If but compliance check 1106 determines that it is feasible that direct P2P connects, invitation service 112 can send the request of propelling movement 1107 to sending out notice service 1050, this request has comprised the acceptance of mobile device B to the request of mobile device A.Push propelling movement token, ID code and/or pass through/connection data of NAT that request 1107 and the propelling movement communication 1108 from sending out notice service 1050 to mobile device A subsequently can comprise session token and two mobile device A and B.In one embodiment, that this information can be encapsulated in is above-mentioned (referring to, for example accompanying drawing 2a-c and specification relevant portion) " label " data structure in, and can adopt unique key to be encrypted.Alternatively, this information also can be simply sent out with together with unique invitation session ID.Invitation service 1050 can also be notified mobile device B: will attempt direct connection.
In this stage, mobile device A and B have enough information and set up direct P2P and be connected.In one embodiment, this is by adopting CDX service 110 recited above to realize.For example, mobile device B appends to label B by its connection data, and 1109, label B (with connection data) is sent to CDX service.Before being about to carry out these affairs, mobile device B can realize affairs (for example affairs shown in Fig. 2 b 235) to guarantee that its connection data is current.Then CDX service 110 authenticates (for example, adopting unique session key as above) to label, extracts the connection data of mobile device B, and 1110, this connection data is forwarded to mobile device A.Similarly, mobile device A appends to label A by its connection data, and 1111, label A (with connection data) is sent to CDX service 110.Before being about to carry out these affairs, mobile device A can carry out affairs (for example affairs shown in Fig. 2 b 232) to guarantee that its connection data is current.Then CDX service 110 authenticates (for example, adopting unique session key as above) to label, extracts the connection data of mobile device A, and 1112, this connection data is forwarded to mobile device B.Finally, 1113, the mobile device A connection data that employing exchanges with B enters direct P2P and is connected.
Turn to now accompanying drawing 12, if compliance check 1106 determines that it is infeasible that direct P2P connects, invitation service 112 can send relaying search request 1201 to relay services 1051, to determine the relay host that will be used by each mobile device.This request 1201 can comprise the network information (for example, pass through/connection data of NAT and/or NAT categorical data) for mobile device A and B, and this information is used for selecting suitable relay host to two mobile devices by relay services 1051.Shown in accompanying drawing 13, an execution mode of relay services 1051 comprises a plurality of relay host 1302-1303, and comprises that relay host database 1301, this database include and each relevant network information in these relay hosts.Invitation service 112 sends relaying search request 1201 to the relaying service of searching 1300, and described request is used the network information inquiry relay host database 1301 for mobile device A and B.When receiving database result, relaying search service 1300 provide response 1202, this response identification selected relay host 1302-1303.
In one embodiment, relaying is searched response 1202 and is comprised the relaying token being generated by relay services, and will be used for by mobile device A and B the network address (IP address/port) of the relay host 1302-1303 of relay connection.In one embodiment, relaying token is associated with relaying session, and is used for when being connected to relay services 1051, mobile device A and B being authenticated by relay host 1302-1303.Token can be taked various forms, and these forms for example comprise: unique ID relaying session id code, digital certificate and/or the unique-encryption key being associated with relaying session.
1203, invitation service sends relaying response 1203 to mobile device B 121, and it comprises the indication that will set up relay connection.In one embodiment, relaying response 1203 relaying token and the network informations that can comprise for relay host B1303.In one embodiment, response 1203 can directly be sent to mobile device B (get around sending out notice service 1050), because it is by response to the acceptance of mobile device B (1105) is sent out.
Invitation service 112 sends relaying response 1204 to mobile device A, and it can comprise relaying token and the network information for relay host B 1303.In this case, this response 1204 is passed sending out notice service 1050 in affairs 1205 and pushes to mobile device A.
1206, mobile device A 120 is used for the network information foundation of relay host A 1302 and being connected of relay services 1051.Similarly, 1207, mobile device B 121 is used for the network information foundation of relay host B 1303 and being connected of relay services 1051.In each in these affairs, on any NAT fire compartment wall of mobile device A and B, opened new hole, for the pass through/connection data of NAT of mobile device A and B, can determine and return to respectively mobile device A and B (for example,, by being identified for the public IP/ port of these equipment) by relay services 1051.In one embodiment, relay services 1051 and mobile device A and B realize and adopt the NAT of relaying to pass through (Traversal Using Relay NAT, " TURN ") agreement, as is known to the person skilled in the art, this agreement allows to be positioned at NAT or fire compartment wall key element below receives the data of arrival by TCP or UDP.
1208, mobile device A sends relaying to invitation service 112 and upgrades, and this relaying is updated in 1209 and is forwarded to sending out notice service pushed to mobile device B 1210.Similarly, 1211, mobile device B sends relaying to invitation service 112 and upgrades, and this is updated in 1212 and is forwarded to sending out notice service pushed to mobile device A 1213.The relaying that sent by mobile device A upgrade can comprise session token, each equipment ID code, pass through/connection data of the definite NAT of the relaying by 1206 and 1207 (, mobile device A sends its pass through/connection data of NAT to mobile device B, vice versa).In one embodiment, carrying out relaying renewal operation is because the NAT information of each mobile device may change.
Finally, 1214 and 1215, mobile device A sets up P2P by relay services 1051 respectively with B and is connected.In one embodiment, when mobile device A sends the pass through/connection data of NAT of mobile device B to relay services 1051, relay connection is established, and vice versa, thereby allows relay services to be determined to the correct path of the relay host 1302-1303 of each node.
By using aforesaid technology, invitation service 112 can be used as stateless service and realizes, even if stateless service also has intrinsic scalability and elasticity in having the large scale system of a large amount of mobile devices.For example, because sending out notice service 1050 can position and push content to it the mobile device of registration inherently, invitation service does not need to follow the tracks of the current location of each equipment.In addition, because equipment can send whole session state datas by each request and response, so invitation service does not need to safeguard any each connection (per-connection) state information, thereby reduced the Storage and Processing demand of invitation service.Such implementation is useful especially in large scale system.
Be used to the system and method for on-line session match user
As shown in accompanying drawing 15, a kind of adaptation service 111 of execution mode can comprise: coupling scheduler 1501, for receiving matching request and pushing match responding to mobile device 120-122; Database 1512, for arranging 1503 storages of identifier (" MST ") form and can mate data are set in request form 1502 storage matching request and can mate; One or more adaptations 1510, for obtaining matching request, carrying out matching operation and matching result is stored back to database 1512 from database 1512.But it should be noted that cardinal principle of the present invention is not limited to the concrete structure shown in accompanying drawing 15.
In one embodiment, coupling scheduler 1501 is as the interface to adaptation service 111, from mobile device 120-122, receive request, these requests are translated into order so that these requests are stored in database 1512, from database 1512, read matching result, and mobile device 120-122 is translated and sent to these results.
In operation, when new matching request arrives, coupling scheduler 1501 can be stored this request in a line of required list 1502.In one embodiment, scheduler 1501 distributes request ID (" RID ") code to each matching request, and this code is simply expressed as " A " in Figure 15, " B " and " C " (the corresponding mobile device A of difference, B and C).Although for simplicity adopt alphabetical indicating mode in Figure 15, RID code can be also that character string, integer or any other are used in the types of variables of following the trail of matching request in database.
Each matching request can be assigned with to be stored in asks mating in form 1502 that identifier (" MST ") value is set.In one embodiment, MSI can identify concrete application that coupling asks and/or for the configuration parameter of that application.For example, the MSI value of 12:4 can identify specific multi-player gaming with identifier " 12 ", and can identify the concrete configuration for this game with identifier " 4 ".More particularly, this ID code 12 can be identified the specific multiplayer game of competing for speed, and ID code 4 can be specified concrete track, speed or the player's experience level for this game of competing for speed.In one embodiment, the developer of application can select by this way and specify any application configuration parameter by MSI value.In one embodiment, application developer is not directly to specify MSI, but specifies game ID (for identifying specific game) and bucket ID (for identifying specific game configuration), and by coupling scheduler 1501, these values is mapped to MSI.
In addition, (for example, 12:4:1 can represent: the 12=game of competing for speed can be in independent MSI by some different MSI values, to specify a plurality of different configuration parameters; 4=track; 1=experience level).As described in more detail below, in one embodiment, by adaptation 1510 use, each MSI identifies one group of matching request, wherein can carry out matching operation (for example, grouping is based on MSI, request to be divided into groups, and carries out coupling in each MSI group).In one embodiment, by scheduler, can change dynamically/select each MSI to comprise for identifying the partition id of different machines subregion.For example, if specific MSI overload, scheduler can be segmented in MSI between two or more different servers and/or partition holding (for example, use for example indication of 4:3:1 and 4:3:2, wherein last figure place is identified respectively subregion 1 and 2).Different adaptations then independently obtains and processes the request from each different MS I, and this MSI is from each different server.
Shown in accompanying drawing 15, matching request data can also be stored in the required list 1502 for each request.Request msg can comprise and anyly can be used for providing data and/or any access mobile device that adaptation determines to initiate to ask needed data by network.For example, in one embodiment, for the matching request data of each request, comprise the pass through/connection data of NAT categorical data and/or NAT of initiating request for mobile device.The other types of request msg also can be stored in required list 1502, for example equipment connection speed (100kbps, 1Mbps etc.), connection type (for example 3G, EDGE, WIFI etc.), device location (for example can be determined by geographic positioning technology), language (English, Spanish etc.) and/or user preferences.Request msg can be determined and is sent to coupling scheduler 1501 together with one of each matching request by each mobile device 120-122.For example, each mobile device can adopt various technology to determine its connection data, connection type, device location etc., some of them technology is described (for example, passing through server communication to determine pass through/connection data of NAT, to determine device location, read HTFP information to determine language etc. with GPS with NAT) in this application.
Shown in accompanying drawing 15, in one embodiment, the MSI of each activation can be assigned with a line in MSI table 1503.In one embodiment, when new request arrives, except this request is added into required list 1502, scheduler 1501 also checks MSI table 1503 is to determine for the whether existing MSI of this request having (that is, whether having received other requests with identical MSI).If do not find the MSI of coupling, scheduler 1501 can create new entry for this new request in MSI table 1503.If find the MSI of coupling, scheduler can be added into this new request in required list 1502 as mentioned above simply.
Once required list 1502 and MSI table 1503 are upgraded by coupling scheduler 1501, the example of adaptation module 1510 (being designated hereinafter simply as " adaptation 1510 ") obtains data to carry out matching operation.A plurality of adaptation examples can be performed simultaneously to carry out matching request, also can process a plurality of matching operations by 1510 pairs of a plurality of different MSI groupings of an adaptation simultaneously.
In one embodiment, for example, when adaptation 1510 is available (, after completing for the matching operation of MSI group or after initialization), its inquiry MSI table 1503 is processed to identify new MSI.At accompanying drawing 15, the responsibility of processing this MSI for " N/A " value representation of MSI 3:1 in adaptation ID region is not yet assigned to adaptation.In one embodiment, each MSI entry is stabbed if having time, and adaptation 1510 selects to have the MSI of earliest time stamp.
In one embodiment, when 1510 couples of specific MSI of adaptation undertake the responsibility, it upgrades its adaptation ID code in MSI table 1503, and specifies taxi (lease) time limit (for example, 5 seconds) for this MSI.In one embodiment, adaptation 1510 is along with it processes the continuous updating taxi time limit value for the coupling of this MSI.Hiring out time limit value can be used for identifying distributing to the MSI of the adaptation 1510 breaking down.For example, if the taxi time limit is expired, even if MSI table 1503 shows that MSI has been assigned to adaptation, this MSI also can be by new adaptation requirement.
Once 1510 couples of MSI of adaptation undertake the responsibility, it can inquire that required list 1502 reads in memory by the request relevant to this MSI.Then adaptation 1510 can for example, be carried out matching operation so that user and mobile device are mated according to one group of matching criterior (, as described below).When adaptation 1510 can carry out with indication matching shift equipment by update request table 1512.For example, adaptation can remove MSI value in the row of required list 1512, and inputs predetermined value to indicate coupling to complete.In addition, adaptation 1510 can upgrade other participants (for example,, by writing the pass through/connection data of NAT needing with other participant signal posts) that " request msg " field is mated with this participant with identification for each participant.
Scheduler 1501 can periodically be inquired the coupling of required list 1502 to have identified.As to the response that completes coupling being detected, this scheduler 1501 can send sending out notice to the mobile device (adopting sending out notice technology described here and the sending out notice technology in common those applications of reviewing) that participates in this coupling.In one embodiment, sending out notice comprises above-mentioned " label " data structure.Then this mobile device can serve their each label of 110 use by CDX as mentioned above and exchange connection data.
Except using sending out notice, in one embodiment, mobile device 120-122 can periodically inquire that scheduler 1501 mates determining whether.Periodically inquiry is very useful in the situation that sending out notice is not also sent to mobile device.But because used propelling movement structure, periodically inquiry can be set to relatively low speed, therefore can reduce the load in coupling service 111.
Accompanying drawing 16 shows the exemplary embodiment of a method, and wherein two mobile device A and B are by mating service 111 couplings.Accompanying drawing 17a-d shows the exemplary renewal to required list 1502 and MSI table 1503, and this may and then occur along with the front of the method.
1601, from mobile device A, receive matching request.1602, the request of mobile device A is transfused to required list, and new MSI entry (MSI 1:1) is transfused to MSI table (if not yet having this entry), as shown in accompanying drawing 17a.1603, from mobile device B, receive matching request, 1604, the matching request of mobile device B is also transfused to required list as shown in accompanying drawing 17b.
1605, one concrete adaptation examples (adaptation #N) check MSI show and detect MSI 1:1 not yet by another adaptation example requirement.Alternatively, adaptation can detect the entry of the MSI table that the rental period crossed, shows fault of the adaptation of working on this MSI before this.In one embodiment, having rental period MSI entry is excessively given than the higher priority of new MSI entry (being not yet assigned to adaptation).In addition, in one embodiment, MSI entry relatively early can be given the priority higher than relatively new MSI entry.No matter adaptation How to choose MSI, after it is selected, it can add its identifier also for example, for MSI entry is set new rental period value, (, the adopting the rental period value of 5 seconds in the example illustrating) as shown in accompanying drawing 17c.Then adaptation can inquire required list and the required list entry with that MSI is read in to memory, to can process them.
1606, adaptation is carried out a series of matching operations and is selected suitable coupling for each request.Some execution mode of matching operation is described with reference to accompanying drawing 18 below.In brief, in one embodiment, the variable of being estimated in order to determine " suitable " coupling comprises NAT type (for example full cone, port limit, symmetrical etc.), connection type (for example WIFI, 3G, Edge etc.), the language (deriving from accept-language (the accepting language) head that HTTP asks) being associated with user, the timeliness (age) of each matching request.General, adaptation 1510 can be attempted the mobile device that coupling has compatible NAT type (sometimes can use relay services although as described below), identical connection type and same-language.In one embodiment, to the matching request based on matching request timeliness, adaptation 1510 may be (that is, request more early, the matching constraint that apply is just freer) more freely.
Go back to accompanying drawing 16,1607, after coupling determines, adaptation 1510 can complete to show coupling by update request table, as shown in accompanying drawing 17d.As a part of upgrading, adaptation can also upgrade the request msg for mobile device A and B.For example, in one embodiment, adaptation 1510 writes the pass through/connection data of NAT of mobile device B and in the request msg for mobile device B, is listed as the pass through/connection data of NAT that writes mobile device A at the request msg row for mobile device A.
1608, the request entry that the read requests table that scheduler 1501 can be from the beginning to the end has been mated with identification.In one embodiment, when it detects mobile device A and B is mated, just read request msg (being upgraded by adaptation as mentioned above), and generate the notice for mobile device A and B.In one embodiment, described notice is " label " recited above data structure, and it is encrypted and comprise the pass through/connection data of NAT for each mobile device.As previously mentioned, in one embodiment, use sending out notice service 1050 to mobile device A and B sending out notice.In addition, mobile device A and B periodically poll (poll) scheduler 1501 mate determining whether.In this embodiment, polling technique can under relatively slow speed, carry out so as for because certain coupling former thereby that be not successfully pushed to mobile device identify.Adopt sending out notice to manage polling request load and reduced significantly the load in coupling service 111, otherwise this service may load the polling request from mobile device.
For same MSI, if define other matching request in 1608, shelving (pending), adaptation can continue matching shift equipment/user in MSI.1610, adaptation can reset rental period value in MSI table 1503.1611, carry out other coupling update request table (as mentioned above).1612, from required list, read these other coupling and upgrade other mobile device (as mentioned above).If do not have other matching request to shelve for this MSI, 1609, from MSI table, remove this MSI entry (for example,, by the delete command from scheduler or adaptation).
The execution mode of accompanying drawing 18 shows the method (operation 1606 of accompanying drawing 16) for carrying out the coupling between mobile device/user.1801, it is right that all current MSI requests (for example, the combination to specific application/bucket) are configured to.1802, the coupling " grade of fit " between assessing every pair, and 1803, according to grade of fit descending, store that these are right.The assessment of " grade of fit " is based on multiple different variablees, includes but not limited to NAT type (for example full cone, port limit, symmetrical etc.), connection type (for example WIFI, 3G, Edge etc.), the language (deriving from the accept-language head that HTTP asks) being associated with user, the timeliness of each matching request.Enter coupling and determine that admissible its dependent variable comprises: the position of each mobile device (for example,, by the trial that the user of ad-hoc location is mated); Minimum and/or maximum player's demand (for example, being specified by user and/or application); Be included in the one or more user in MSI and be whether " friend " or entered before this P2P and connect (for example, preferential coupling " friend " or acquaintance); User for example, for the experience (, for multi-player gaming, each user's ranking list grade can be considered into, and preferential coupling has the user of similar experience) of this application.
As indicated in Table A below, in one embodiment, to the assessment of " grade of fit ", be the digital value between 0.0 and 1.0.Adopt floating point values to allow the grade of fit of each standard to be normalized.For avoiding floating-point operation, non-normalized integer value can be used for to suitable calculating, thereby can compare grade of fit.
In one embodiment, all standards have binary grade of fit, and wherein they are compatible (have be 1.0 normalized value) or incompatible (having the normalized value that is less than 1.0).These can regard needed standard as, and wherein grade of fit can change with timeliness (as described below).If position is added to variable, best grade of fit may be and can meet the grade of fit between the recent players of required criterion.
Coupling grade of fit---Table A
Factor Weight Normalization
NAT is compatible 2.0 0.4
Connection type 2.0 0.4
Language 1.0 0.2
All 5.0 1.0
In one embodiment, for each above-mentioned criterion, grade of fit equals the summation of (factor value of normalized weight * ageing).The factor value of ageing can be initially 1 and through increasing after predetermined amount of time.It can continue to increase (for example, periodically increasing predetermined amount) as time goes by.In one embodiment, not the factor value that uses above-mentioned ageing, but can be according to the timeliness threshold value of setting up as described below.Normalization/the weighted value of some variable (for example connection data and language) can be employed (even if they do not mate) on some timeliness threshold value.
In one embodiment, the mean value for the grade of fit of A that is A for the grade of fit of B and B of " grade of fit " between a pair of request A and B.In addition,, for each factor, A can adjust (vice versa) according to the timeliness of A for the grade of fit of B.In one embodiment, for compatibility coupling, may need 1.0 grade of fit.This means and only have when (causing 1.0 normalized value) all mates when NAT compatibility, connection type and language coupling, A and B could mate, if or A and ageing of B make some (for example connection type and language) in above-mentioned variable be in fact left in the basket (using above-mentioned ageing factor value or threshold value below).
Timeliness---table B
Timeliness Threshold value 1 Threshold value 2 Threshold value 3 Threshold value 4 Threshold value 5
Early than 0 second 1 second 5 seconds 10 seconds 30 seconds
Can set up timeliness threshold value according to the mode of showing to propose in B above.Along with the process (that is, when request becomes more Zao than threshold value) of each timeliness threshold value, the factor value of ageing can increase to increasing value (for example 1.5,2.0 etc.).Alternatively or additionally, along with different timeliness threshold value processes, for the weight of some variable, may be added to described coupling and determine (for example, connection type as described below and language).
In one embodiment, in table B, the request timeliness restriction of appointment is according to adjusting for the coupling flow rate of given MSI.In one embodiment, flow rate is defined as in the matching number that each specifies unit interval (for example every 10 seconds, every 1 minute etc.) execution.Therefore, flow rate provides about specific MSI and has been set with how busy indication.In one embodiment, this setting is busier, and each above-mentioned threshold value of showing in B is above set lowlyer, to improve the possibility that success is mated as early as possible and to reduce the load of adaptation.In addition, the load arranging for given MSI also can offer terminal use's (for example for time of coupling assessed value form), makes terminal use can select whether to attempt entering busy especially multi-player gaming.Load value can offer user by the form of sending out notice.
Each variable in present GO TO table A, in one embodiment, NAT compatibility is that the compatible chart 1400 of the NAT shown in 14 is determined with reference to the accompanying drawings.If determine that according to this chart two NAT are compatible, can apply the compatible weight of NAT.
Connection type---table C
A/B WiFi Edge 3G
WiFi 1.0 0.0 0.0
Edge 0.0 1.0 0.0
3G 0.0 0.0 1.0
Can use for example chart shown in above-mentioned table C to assess connection type.In this example, if the connection type of device A and B is identical (is designated as 1.0 and meets identical connection type in cell), the weighting connection type value of Table A can be included in the determining of grade of fit.As mentioned above, can adopt the timeliness of each request to affect connection type determines.For example, in one embodiment, the matrix that is use table C for the grade of fit of connection type is selected for the timeliness at threshold value 1,2,3 places.For threshold value 4 or the timeliness of high threshold more, connection type can be set to 1.0 (even for non-matching connection types), and can apply corresponding weighting connection type.Although used in some embodiments connection " type ", also can determine connection speed and use together with connection type or replace connection type.For example, the connection speed in some specified scope is considered to " compatibility " (for example, 0-100kbps, 100-500kbps, 500-1000kbps, 1000-1500kbps etc.).Any in coupling variable discussed here calculates also can to coupling grade of fit and timeliness as above is used as weight.
In one embodiment, player's language can obtain from the accept-language head of HTTP request, and it can comprise one or more language with the preference factor.Scheduler can extract the language of preference and this information is sent to adaptation.In one embodiment, if identical language, the weighting Linguistic Value from Table A is set to 1.0, if not identical language, is set as 0.0.But in one embodiment, even if language is different, if but timeliness higher than assign thresholds, also can apply weighting Linguistic Value (for example, if timeliness in table the threshold value 2 in B or higher).
In one embodiment, can mate having between two users of incompatible NAT type.For example, if adaptation is difficult to match user for concrete MSI,, after the time of one section of appointment, it can adopt technology as above to connecting, to carry out route by relay services 1051.Like this, relay services 1051 is as pressure valve, although the incompatible aging coupling of generation that also allows of NAT type.Can also attempt using relay services 1051 in response to one or more failed couplings being detected.In this embodiment, each matching request of being submitted to by mobile device can comprise for the indication of whether having attempted before this one or more failure couplings.
Can assess and provide weighted value as a coupling grade of fit definite part to it various additional matching criterior, these criterions comprise (such as but not limited to) for the indication of following situation: having asked whether there is anyone in those users of coupling is friend.For example, by " friend " weight being applied in the calculating of coupling grade of fit, adaptation 1510 can be attempted mating for any request of those users as friend.Similarly, friend's friend also can be weighted (for example, being separated by 2 or more).In addition, for specific game, a player can evaluate other players, and adaptation can be assessed these and evaluate (those players that tend to have relatively high praise for user's coupling are for user is mated the player without low evaluation) when carrying out coupling.In addition the stand-by period (latency) that, user connects also can evaluated (for example, adopting simple ping operation) and the part that determines as coupling.
Another can be device type for mating player's variable.For example, adaptation 1510 can be attempted the player (for example iPad, iPod, iTouch, iPhone, RIM Blackberry etc.) that coupling has like device type.Other variable can also comprise user's ranking list grade, current location, current dwelling, age, sex, similar game collection also can be assessed that (coupling is determined similarly, in many cases, trend towards mating having between the user of similar standard).Finally, the head of a family controls and also can be assessed by adaptation 1510, to guarantee that user can only mate with applicable MSI and other users of same age.
Adaptation service 111 can be obtained any above-mentioned variable from the one or more databases by data, services 100 (for example, referring to,, 19 databases 1920 of describing with reference to the accompanying drawings) management.For example, user friend's data can be from friend's service database access, and other information (such as age of each user, sex, game collection etc.) can for example, from one or more other database accesss (user profiles (profile), game database, ranking list database).In one embodiment, all services described herein can be accessed same central database (or one group of database), various dissimilar user/device data that this database storage determines for making coupling.
Although some concrete examples are provided, should be appreciated that cardinal principle of the present invention is not limited to for determining arbitrary group of particular type variable of the grade of fit of coupling above.In one embodiment, design is applied in one group of standard that the programmer who moves on system and method as described herein can specify themselves, for the request of employing different MS I standard is mated and/or divided into groups.
Go back to the method for accompanying drawing 18, once the coupling " grade of fit " between determining every pair, 1803, the grade of fit that adopts descending to these for example, to sort (that a pair of top that is positioned at list, with the highest grade of fit).1804, have higher than those of the highest grade of fit of assign thresholds being used as the seed of " coupling arranges ".As mentioned above, the value of " threshold value " can be set to normalized value 1.0, shown in Table A above.1805, new expection partner is added into coupling and arranges, this expection partner with mate in arranging one or whole current member and there is the fitness value higher than assign thresholds.For example, if coupling arranges and usingd at first A and B as seed, if the fitness value of A-C and/or B-C is higher than assign thresholds, C may be added to coupling setting.In one embodiment, if for expection side, only has a coupling grade of fit higher than threshold value, (this expection side may be added to coupling setting, if desired, because this expection side can be by communicating by letter with every other each side with its side with suitable coupling grade of fit).One or more new expection sides be added into coupling arrange after, if determine that 1806 the size requirement for coupling is met, store matching result and 1807, report (for example,, by update request table 1502 transmission notice as mentioned above).In one embodiment, matching request can represent a plurality of users (for example, as hereinafter described, when matching request is immediately following after inviting sequence time).In this case, the number of the user based on by each matching request representative is assessed size requirement.If do not meet size requirement, process and return to 1805, and add new side to coupling setting (that is, with in group or whole current members mate grade of fit higher than that side of assign thresholds).
1808, adaptation 1510 removes from current the request of mating that group request of processing.1809, select next coupling setting and process as seed to turn back to 1804 to carry out other coupling.Although shown in Figure 18 is to process successively, should be appreciated that a plurality of coupling settings as seed can be handled simultaneously, still meet cardinal principle of the present invention simultaneously.
Although conduct above independently service is described, adaptation service 111 also can operate to be connected P2P user together with invitation service 112.For example, in one embodiment, first user can invite one or more friends to on-line session, and (for example, INVITE (invitation) friend " Bob " is also 3 other players of multi-player video game coupling) mated in request with one or more other users.In this case, first invitation service 112 can process first user's invitation request, so that (one or more) friend of first user and first user is coupled together.Invite the result (for example, successfully P2P connects) of request then to be reported back this user's mobile device.Then coupling service 111 can receive from the matching request (or, in one embodiment, directly receive from invitation service or from user's friend) of mobile device of having asked other player's first user.As response, coupling service 111 can be mated first user with one or more other matching request, and described other matching request have the MSI identical with the request (as above) of first user.Matching request can only include the matching criterior of first user, or also can comprise friend's first user and first user matching criterior (such as NAT type, connection type, language, position etc.).In one embodiment, if one or more in the friend of first user can not set up direct P2P with another match user and be connected, can set up the user of mating with the friend of first user by the data processing equipment of first user is connected (for example,, using the mobile device of first user as the agency for connecting) and/or can uses relay services to connect these users (as above).
In one embodiment, can be first by coupling service, first user be mated to (as above) with one or more users, then first user can invite one or more friends to add and first user and the on-line session of match user.In this embodiment, user's information and the information of match user (such as NAT/ connection data, user ID, propelling movement token etc.) can exchange (as mentioned above) by invitation service and the user who is invited to.No matter be coupling first to occur invite again, still first occur to invite to mate again, cardinal principle of the present invention is all identical.
The application framework with application programming interfaces for the online application that cooperates
As shown in accompanying drawing 19, an embodiment of the invention are to implement in the environment of mobile device 120, this mobile device has predetermined software frame 1912, and this software frame has for carrying out mutual application programming interfaces (" API ") 1910 and the service side API 1910 for communicating with a plurality of network service 1901-1903 with one or more application 1911.As shown in Figure 19, network service 1901-1903 can be by 100 designs of identical online data services and/or management (but such structure not necessarily).Application 1911 (for example the cooperation of P2P game application and other types is applied online) can be designed to: by calling to API 1910, via API 1910, visit network service 1901-1903.The SDK (" SDK ") providing by the developer who uses by framework 1912 and network service 1901-1903, can be so that the design of application 1911.Framework 1912 and API 1910,1913 one more specifically implementation with reference to accompanying drawing 20, be described below.
As directed, each service can accessing database 1920, and this database is for storing the data of being used by these services.A special example is the database 1512 (as mentioned above) being used by coupling service 111.Other example can comprise: for storing the ranking list database of ranking list data, for storing friend's service database of friend's state recording, for the profiles database of storing user profile data, for storing the game database of the data relevant with game on line.The database of any type can be used (such as MySQL, Microsoft SQL etc.), but in a special execution mode, can use the key/value database of Berkley DB for example and/or MZBasic DB.Many mass memory units (for example hard disk drive) that database can expand in storage area network (SAN) are upper, also can adopt other stored configuration.
Therefore,, when specific service is processed as mentioned above and/or stored data, data can be stored in database 1920.But some services are usage data storehouse not.For example, as mentioned above, invitation service 112 can be used as stateless service and realizes, therefore without store data (but according to cardinal principle of the present invention, such implementation is also possible) in database 1920.
API 1913 for example can be designed, by using suitable network protocol stack (comprise the TCP/IP or the UDP/IP that are positioned at network layer, and the HTTPS that is positioned at application layer) and network service 1901-1903 to communicate and exchange message.Can use the agreement based on Remote Procedure Call (RPC) (for example SOAP) and/or statement sexual state on HTTP or HTTPS to shift (REST) agreement.In addition, these services can realize in any computing platform, and these platforms for example comprise Xserve or similarly move server or the Apache software platform of Unix, Linux.In a concrete execution mode, platform is included in the upper web object of realizing of Linux.Aforementioned these examples are only used for the object of explanation.Cardinal principle of the present invention is not limited to for application being connected to any specific mechanism or any specific procotol set of service.
Accompanying drawing 20 shows more detailed software configuration, and it comprises application programming interfaces (API) 2001a-b implementing on can wireless device 120 in an embodiment of the invention.Although describe this execution mode in conjunction with the environment of multi-player gaming framework 2000, cardinal principle of the present invention is not limited to the execution mode of playing.For example, software configuration shown in Figure 20 can be used for supporting the collaboration applications (such as cooperation chat, multiparty collaboration audio/video etc.) of various non-game.
In the structure shown in accompanying drawing 20, provide various in many ways characteristics and the P2P characteristic of game frame 2000 to support to describe in the application.In one embodiment, game frame 2000 is designed to run in the operating system 2005 of mobile device.For example, if mobile device 120 is iPhone, iPad or iPodTouch, operating system 2005 can be iPhone OS, and this is the Mobile operating system by assignee's design of the application.
Game frame 2000 can comprise public application programming interfaces (API) 2001b and API 2001a privately owned or " safety ".In one embodiment, be designed to provide the game center application 2031 of various game correlation properties described herein both can call public API 2001b and also can call privately owned API2001a, for example, and other application 2030 application of third-party design (, by) can only be accessed public API 2001b.For example, the designer of mobile device 120 may wish the specific api function that relates to potential sensitive information to be retained in outside public API 2001b, in order to avoid by third party developer's abuse (such as friend's request, list of friends etc.).But, the two can be incorporated in an API that can be obtained by any application on mobile device (that is, cardinal principle according to the invention do not require API is divided into separated common component and privately owned assembly) safe API 2001a and public API 2001b.Title " API 2001 " is used to refer to generation public API2001b and/or the privately owned API2001a operation that can exist in any one below sometimes.
The execution mode of a game center application 2031 is described in common following application in a review: title is " System and Method for Providing a Game Center ", agent's application case is numbered 4860.P9127USP1, sequence number is 61/321,861, application on April 7th, 2010, invention people is MarcelVan Os and Mike Lampell (hereinafter referred to as " game center patent application "), and it is transferred to the application's assignee and is incorporated into by reference this.In brief, game center application 2031 comprises game center graphical user interface (GUI), for navigating at multi-player gaming, buys new game; Obtain and the relevant information of playing (such as ranking list information, achievement, friend's information etc.); Contact friend play; Request is played and is mated with other users; Invite specific user.In the game center patent application that various other functions of being carried out by game center application 2031 are pointed out in the above, be described.Some functions of game center can be provided by game frame 2000, and can be by public API 2001b and by other application 2030 access.
In one embodiment, by the disclosed API 2001 of game frame 2000, simplified the process that cooperates and play for mobile device 120 design multiplayers.Especially, in one embodiment, API 2001 allows developers to carry out simple API Calls and calls the process of the relative complex that connects user for multiplayer P2P gaming session.For example, can from API 2001, call simple API Calls (for example INVITE (player B ID, bucket ID)) to start above-mentioned detailed invitation sequence.Similarly, can from API 2001, call API Calls (for example MATCH (player AID, bucket ID)) to start above-mentioned detailed matching sequence.Here, INVITE (invitation) and MATCH (coupling) function are referred to as " P2P contiguous function " sometimes.In one embodiment, game frame 2000 comprises as the response of these API Calls is managed to required program code (as described in more detail below) to invitation and matching operation.It should be noted that actual api function can have and aforementioned slightly different data format (although they may cause the similar operation of being carried out by game frame 2000).Cardinal principle of the present invention is not limited to be used to specify any specific format of api function.
The affairs relevant to game of various other types and information also can be managed by game frame 2000 game representation centers 2031 and other application 2030.Some in this information are described in game center patent application.For example but be not limited to, this information can comprise with those and reached user-dependent " ranking list " information of each game best result and completed for whom identifies " achievement " information that particular game is designated as user just.Each application developer can specify themselves " achievement " that each game application 2030 is arranged (for example, to complete grade 1-3; At 5 minutes, with the interior grade 1 that completes, each grade was eliminated and is surpassed 50; Knock 20 flags down, etc.).
Game frame 2000 can also comprise for friend's data of leading subscriber with for integrate the program code of friend's data at the environment of game center 2031 and other game application 2030.For example, when user is when the link of particular game is arrived in one of the interior selection of game center 2031, for this game, can show the information relevant to each friend of this user (for example the grade of friend in ranking list, friend's achievement, result when this user and his/her friend play, etc.).In one embodiment, the API 2001 of game frame 2000 comprises for accessing the function by friend's data of friend's Service Management, for example in following common application in a review, describe: title is Apparatus and Method for Efficiently Managing Datain a Social Networking Service, agent's application case is numbered 4860.P9240, sequence number is 61/321848, on April 7th, 2010, apply for, invention people is Amol Pattekar, Jeremy Werner, Patrick Gates, and Andrew H.Vyrros (hereinafter referred to " friend's service request "), it is transferred to the application's assignee and is incorporated into by reference this.
As shown in accompanying drawing 20, in one embodiment, game background program (daemon) 2020 can carry out interface to game frame 2000 and first group of service 2050, and game services assembly 2010 can carry out interface to game frame 2000 and second group of service 2051.For example, first group of service 2050 can comprise aforesaid invitation service 112, coupling service 111 and relay services 1051, and the friend who describes in above-mentioned friend's service request service.Other service that can access by game background program 2020 comprises: ranking list service (ranking list data are provided); Game services (provide and each play relevant statistics and other data, and the ability of buying game); User's authentication service (authenticating for the user to mobile device); And/or user profiles service (for example, for storing user profile data, user preference).Via game services assembly 2010, second group of access service 2051 can comprise that above-mentioned connection data exchange (CDX) service 110 and NAT pass through service 290-291.Although be shown as for illustrative purposes assembly separately in accompanying drawing 20, in fact game background program 2020 and game services module 2010 can be the parts of game frame 2000.In one embodiment, game background program 2020 is communicated by letter with each network service 2050-2051 by predetermined API with 2010, and in one embodiment, described predetermined API is privately owned API (that is, not announcing to third party developer).
In one embodiment, game background program 2020 can come and mate service 111, invitation service 112 and other services 2050 and communicate by HTTPS agreement, and game services module 2010 can be used the agreement (for example UDP socket) of relative lightweight to come to serve 110 with CDX to pass through and serve 290-291 and communicate by letter with NAT.But, as previously mentioned, can use various other procotols, still meet cardinal principle of the present invention simultaneously.
In addition, as shown in accompanying drawing 20, game background program 2020 can receive the sending out notice 2052 for example, being generated by special services 2052 (invitation service and coupling service), for example, and the sending out notice 2053 of other types (can directly be received by game center, friend's Service Notification, for example new friend's request).In one embodiment, these sending out notice 2053 are provided directly to game center 2031, to guarantee that the application 2030 that user's sensitive data can not designed by third party application developer accesses.
Return to now the example of the game invitation of mentioning above in accompanying drawing 11, when the API 2001b of the 2030 pairs of game frames 2000 of application on mobile device A invites the user who calls to invite mobile device B (for example, INVITE (player B ID, game/bucket ID)), game frame 2000 can be sent to the game background program 2020 of mobile device A by the request of inviting.Then the background program 2020 of playing can communicate by letter to submit to the request of inviting with invitation service 112.Then invitation service 112 can be used sending out notice service 1050 (as mentioned above) invitation to be pushed to the game background program 2020 of mobile device B.Then the game background program 2020 of mobile device B can be communicated by letter with the game frame 2000 of mobile device B, the request being sent to determine for game whether on mobile device B, install.If installed, game frame 2000 can trigger application 2030 and/or generate the visual notice of described invitation.If this application is not mounted, game frame 2000 can trigger to the user of mobile device B the visual notice of described invitation, please it buy this game (for example,, by game center 2031 GUI).Or visual notice can generate (not shown) by the sending out notice background program operating on mobile device 120.If the user of mobile device B buys this game, invite sequence after buying, to continue.If the user of the mobile device B request of accepting the invitation, the game frame 2000 of mobile device B can be sent to its game background program 2020 by the request of inviting, and then this game background program can make response to invitation service 112.
Get back in accompanying drawing 11, compliance check 1106 determines that the NAT type of mobile device A and B is compatible.Therefore, 1108, the game background program 2020 of mobile device A can receive receive information (for example, the passing through in this example sending out notice) of mobile device B, and, in one embodiment, described in inciting somebody to action, receive information and be delivered to game frame 2000.At this one-phase, the game frame 2000 of mobile device A can be accepted (by API 2001) to the application 2030 notice mobile device B that ask, and the equipment of also can always the waiting until application 2030 that Shi Caixiang asks that successfully connected is put up a notice.In any situation, game frame 2000 can transmit connection request to game services module 2010, and in one embodiment, game services module 2010 can be initiated the connection data exchange with mobile device B.Especially, game services module can adopt CDX service 110 to mobile device B, to send the connection data (referring to the affairs 1111 and 1112 in accompanying drawing 11) of mobile device A.As above, this communication can be to adopt the UDP type of attachment of safety " label " data structure to realize.
Get back to accompanying drawing 12, if compliance check 1106 determines that the NAT type of mobile device A and B is incompatible, can provide by relay services 1051 connection of these equipment rooms.Therefore, the game background program 2020 of mobile device B can receive relaying response 1203 (shown in Figure 12) from invitation service, and the game background program 2020 of mobile device A can receive relaying response 1205 (serving 1050 by sending out notice) from invitation service.The game background program 2020 of mobile device A and B can communicate by letter to obtain 1206 configuration data with relay services with 1207.1210, the game background program 2020 of mobile device B receives more new data of relaying from mobile device A, and 1213, the game background program 2020 of mobile device A receives more new data of relaying from mobile device B.
The end product of processing at accompanying drawing 11 with shown in 12 is mobile device A connect each other with B (can be that direct P2P is connected, can be also relay connection).In one embodiment, when successful connection being detected, the application 2030 that game frame 2000 can connect to request by API Calls put up a notice (for example, CONNECTED (player A ID, player B ID)).Then mobile device A and B can be used set up connection to carry out game or other collaboration applications 2030 of appointment.
Therefore, in response to for example, from relatively simply the calling of API 2001 (, INVITE player B ID, game/bucket ID), game frame 2000 can be managed the affairs of series of complex to set up P2P or relay connection between mobile device A and B.In one embodiment, game frame 2000 is carried out sequence of operations to set up the connection of mobile device A and B, then result is offered to request application 2030, thereby makes the details of API Calls keep transparent for application designer.Like this, programmer does not need to understand how on network, to set up the connection between mobile device A and B, or how to carry out the various functions that the signal post between activated equipment needs, thereby has simplified programming procedure.
In a kind of similar mode, game frame 2000 can adopt above with reference to the coupling service 111 of accompanying drawing 2a-b and set up between mating between mobile device A and other participants.In this example, application 2030 can simply be called API 2001, for example MATCH (player AID, game/bag ID).As response, game frame 2000 can managerial fit and connection data swap operation.When matching operation and/or P2P connect, complete, game frame 2000 provides result to respond with 2030.
For example, in accompanying drawing 2b, game frame 2000 can be used game services module 2010 to pass through service 290-291 with connection data exchange (CDX) service 110 and NAT and communicate by letter, and can use game background program to communicate by letter with coupling service 111.After having made coupling, the game background program 2020 of mobile device A is at 229 reception label As, and game frame 2000 is used this information exchange to cross game services module 2010 and realizes connection data exchange.For example, 232, it can, by the NAT service of passing through 290 its connection data of request, then serve 110 its connection data of exchange at 233-234 by CDX.237 and 240, the game services module 2010 of mobile device A receives respectively the connection data for mobile device B and C.After these exchanges, game services module 2010 is set up P2P 241 and is connected, and game frame 2000 adopts API notice to notify this connection process to complete (for example, MATCHCOMPLETE (player B ID, player C ID)) to this application 2030.Then can with set up P2P, connect to carry out this application.
In some embodiments, can provide following option to user: play with other friends of current being registered as " online ".In this case, can provide about the online notice of some friend (directly being received by game center 2031) by sending out notice 2052 or sending out notice 2053.Then game center 2031 and/or application 2030 can provide these notices to user, and provide to user the option of playing with one or more selected online friends.But it should be noted that no matter whether provide notification line, invitation sequence described herein can be worked.In one embodiment, user's presence can for example, by the service watch (, served by friend above-mentioned or served experience by independent " existence ") that can be accessed by game background program 2020.
An execution mode of game frame 2000 provides the invitation/matching operation of combination, and wherein, user can invite one or more friends to play games with the participant of mating of one group of the unknown.For example, if game needs 4 players, first user invites the second user to play games, and first invitation service 112 can connect first user and the second user, and then coupling service 111 can match first user and the second user and two other (or a plurality of) other players.In this embodiment, first game frame 2000 can carry out above-mentioned invitation sequence to connect first user and the second user.In one embodiment, once first user is successfully connected with the second user, game frame 2000 can be realized these matching sequences, to identify and to be connected other users.As mentioned above, in one embodiment, the applied matching criterior of coupling service can comprise the first and second users the two (such as the first and second users' NAT type, connection type, language etc.).Alternatively, the criterion that can assess one in two users is made coupling decision.
Once all users are connected, the application 2030 that game frame 2000 can connect to request by API2001 provides connection result.Again, as the response of 2030 pairs of relatively simple API Calls of application, game frame 2000 enters a complex set of affairs to connect each equipment.Once equipment connection success, game frame 2000 provides and returns results to the application 2030 of asking.
As shown in accompanying drawing 20, game frame 2000 can comprise communication buffer 2003, for communicating by letter between temporary transient storage user and other participant in game.Described communication for example can comprise text, audio frequency and/or video communication.The demand that game frame 2000 can apply 2030 based on each is set up buffer 2003.For example, the audio/visual communication for having slower network connection, may need relatively large buffer 2003.In one embodiment, each application 2030 can be set up certain big or small communication buffer (for example, using BUFFER (size) order) by API 2001 explicitly requests.Alternatively, game frame 2000 can automatically create buffer according to the demand of each application.For example, whether game frame 2000 can be according to needing to support text, audio frequency and/or video to select specific buffers size.
In one embodiment, before having set up whole P2P connections between user, communication buffer 2003 is storing communication stream temporarily.For example, after each user has been identified in invitation service 112 or coupling service 111 but before CDX service 110 completed connection data swap operation, can be to each user notification participant in game of other in connection process just.In this stage, the user of mobile device 120 can send text, audio frequency and/or video communication and flow to other participants.Participant's storing communication stream that game frame 2000 is not yet connected for those in communication buffer 2003.Then when the connection for each equipment completes, game frame 2000 can send text, audio frequency and/or video from buffer 2003.
In one embodiment, game background program 2020 comprises for the data in each service 2050 being carried out to the buffer memory 2021 of buffer memory, to reduce the flow of network.For example, user's list of friends, ranking list data, achieve data, exist data and profile data can be stored in buffer memory 2021, as specified by cache management strategy.In one embodiment, cache management strategy is served to drive by each that stored data.Therefore, for n different service, can be to n different cache management strategy of buffer memory 2021 application.In addition, because cache management strategy is by service driving, it can dynamically be revised based on current network and/or server load present situation.For example, serious time period of service load (such as Christmas Day, release of new products day etc.), service dynamically named cache management strategy is upgraded (for example within every 12 hours, upgrading) not too frequently to buffer memory.As a comparison, in the not serious time period of service load, service can specify buffering strategy to upgrade relatively continually buffer memory (such as upgrading for every 1/2 hour, 1 hour, 2 hours etc.).
In one embodiment, cache management strategy is by carrying out appointment for being stored in life span (TTL) value of some data record of buffer memory 2021.When the data record in being stored in buffer memory has been passed through its ttl value, those data are considered to " outmoded ", for this locality request of those data, can be directly transmitted to the service being associated with those data.In one embodiment, this request comprises the ID code for identification data current version.If this ID code mates with the ID code in service, data are still effectively and not to need to upgrade.Then can send it back response from service, to show that the data in buffer memory are current, for the ttl value of these data, can reset.
Except using as mentioned above cache management strategy, in one embodiment, for the buffer update of some categorical data, can use sending out notice to serve 1050 pushed to mobile device.For example, the change of user's list of friends or user friend's current presence being carried out can dynamically push to user's mobile device 120.Sending out notice can be received by game background program 2020, then this background program can upgrade buffer memory 2021 to comprise part relevant in the data that pushed by described service (that is, may not need to upgrade serving relevant total data to that in buffer memory).As a comparison, some sending out notice can instruction game background program 2020 cover the full content (or at least relevant to the service of carrying out this propelling movement part buffer memory) of buffer memorys.
Those services that utilize propelling movement to upgrade buffer memory 2021 can be selected relatively high ttl value (and/or ttl value is not set), because they have sending out notice to update stored in the ability of the data in buffer memory 2021.In one embodiment, one group of event is specified in each service, and these events can trigger sending out notice buffer update.For example, buffer update event can comprise the acceptance of the change of friend's presence, new friend request, friend's request, removes the renewal of first 10 of friend's operation, the indication that friend is playing particular game, the game achievement that friend reaches, specific ranking list or be considered to enough important and should carry out other any events of buffer update.With sending out notice, upgrade buffer memory 2021 by this way and can reduce network and service load, because upgrade along with pushing, the periodic polls of mobile device and equipment room has not just needed.
The data setting form presenting to terminal use is given in country and/or the geographical position of an execution mode of game frame 2000 based on user uniquely.For example, for country variant and regional numerical value (for example, for current date, time and currency), can present in a different manner.For instance, in the U.S., date format can be [month day, year] (for example, April 25,2010), Er other countries, and date format can be [life, year] (for example, April on the 25th, 2010).Similarly, when the Dang U.S. or some other countries presentative time, can use AM/PM indication and can hour and minute between use colon (for example, 3:00PM).As a comparison, many other countries do not use AM/PM indication and/or hour and minute between use comma (for example, 15,00).As another example, the world many local used metric system system and (for example U.S.) is not used in some place in the world.It should be noted that the illustrative example that these just can be adopted by specific implementations of the present invention.Cardinal principle of the present invention is not limited to any specific data format setting.
In one embodiment, when showing the data that ranking list data, achievement data, friend's data and/or any other are processed by game frame 2000, can select these different data formats.Game frame 2000 can be determined user's country and/or geographical position in various manners.For example, in one embodiment, this information provides simply and/or can determine by the cellular service provider based on user in user's profile data.For example, can use global positioning system (GPS) to follow the tracks of the position of determining user.
Also can be managed by game frame 2000 with incoherent other type of data format in address location and/or country.For example, when showing ranking list data, importantly know whether that minimum score should make top or the bottom of this user in ranking list.For some game (such as golf, track, compete for speed, skiing etc.), the good achievement of lower digitized representation, and in some other game (such as football, baseball etc.), the good achievement of higher digitized representation.Therefore, in one embodiment, application 2030 specifies by API 2001 the mark type (for example, " ascending order " or " descending ") that will use.Then game frame 2000 can show score with suitable mark and formatting.
An execution mode of game frame 2000 can also the relation based between user and user's friend carry out filter user data.For example, an embodiment of the invention have allowed " in detail " view, " friend " view and " public " view.In one embodiment, detailed view can be used for the user who has these data (being user's personal information).Friend's view is available for user's friend; Common view is available for whole other users.
For instance, common view can only comprise " another name " being associated with each user, the game of being undertaken by this another name and corresponding mark and the date/time of playing.These information can be used to insert public ranking list by game frame 2000, and then this ranking list can show by game center 2031.
Friend's view can comprise from all information of general view and between user's friend shared additional information, for example comprise: the game that user has; The game that user played; User's achievement and mark; User has how many friends; Those friends' identity; The URL that user's incarnation (avatar) is identified and/or this user's presence, this is only example.In one embodiment, " friend " view provides one group of default information will sharing with friend, but can adjust this default setting and specify will be by the information of the shared particular type of each friend or friend's group (such as the friend of colleague, kinsfolk, university/senior middle school etc.) for terminal use.
" in detail " view can comprise from all information of " public " and " friend " view and any other information of being managed by various service 2050 GC group connector users.For instance, this can comprise whole profile datas of this user; This user's universal unique identifier (" UUID ") (being sometimes referred to as " player ID " in the application); Player's name; Another name; The identity of game number and game; User's friend; User's institute is successful etc.
In some cases, a small amount of information that application 2030 can only need to be associated with each user, for example each user's player ID.For example, in one embodiment, when having asked coupling, game frame 2000 can first only need each user's player ID.When coupling is by coupling service while carrying out (referring to above), game frame 2000 can determine that whether any one in match user be friend's (for example,, by communicating with friend's service and/or passing through local friend's data of inquiring user).If determined, game frame 2000 can be obtained additional user data and the friend of these data to any coupling is provided.Like this, the identity of game frame 2000 based on user and the relation between each user and filtering information.
In one embodiment, if two users are not friends, first game frame 2000 provides common view between first user and the second user.For example, but in one embodiment, game frame 2000 allows first user to send friend's request (, using the second user's another name) to the second user.If friend request is accepted, game frame 2000 provides additional information (for example, default " friend " view) by each in these users.
Other API execution mode
The API carrying out is in one embodiment the interface of being realized by component software (hereinafter referred to " API realizes component software "), and it allows other component software (hereinafter referred to " API Calls component software ") to access and use and one or morely by API, realizes function, method, program, data structure and/or other services that component software provides.For example, API allows developer's (can be third party developer) of API Calls component software to support (leverage) to realize by API the specified characteristic that component software provides.Can there is an API Calls component software, also can have more than one such component software.API can be the source code being provided by computer system or program library, to support the service request from software application.Can be at programming language this respect that can be explained when setting up application or compiling, rather than specify API at the explicit rudimentary description this respect of the arrangement in memory about data.
Language and parameter that API has been used when having defined API Calls software component accesses and having used API to realize the specified characteristic of component software.For example, API Calls component software is by visiting by the disclosed one or more API Calls of API (being sometimes called function or method call) specified characteristic that API realizes component software.As the response of the API Calls to from API Calls component software, API realizes component software can pass through API return value.For example, because API has defined grammer and the result (, how to call API Calls and API Calls and do what content) of API Calls, the common underground API Calls of API is what how to complete by the specified function of API Calls.By one or more application programming interfaces, realize and between component software, transmit various function calls or message calling software (API Calls component software) and API.Transfer function is called or message can comprise function call or message are initiated, initialization, called, receive, return or respond.Therefore, API Calls component software can call by passing, and API realizes component software also can call by passing.
For instance, API realizes component software 2010 and API Calls component software can be operating system, storehouse, device driver, API, application program or other software modules (should be appreciated that API realizes component software and API Calls component software can be mutually the same or dissimilar software module).API Calls component software can be local software assembly (, realize component software in same data handling system with API), or by API, realize with API the remote software assembly (that is, realizing component software in different data handling systems from API) that component software communicates on network.Be to be understood that, API realizes component software and also can be used as API Calls component software (, it can be carried out realized the API Calls that the disclosed API of component software carries out by other API), and by realizing the disclosed API of other API Calls component softwares, API Calls component software also can be used as API and realizes component software.
API can allow a plurality of API Calls component softwares of writing with different programming languages and API to realize component software and communicate (therefore, API can comprise for API is realized call and return the characteristic of translating between component software and API Calls component software); But API can realize according to concrete programming language.
Accompanying drawing 21 shows the execution mode of an API structure, and it comprises that the API that realizes API 2120 realizes component software 2110 (for example operating system, storehouse, device driver, API, application program or other software modules).API 2120 has stipulated that API realizes one or more functions of component software, method, class, object, agreement, data structure, form and/or other characteristics, and they can be used by API Calls component software 2130.API 2120 can stipulate that at least one calls agreement, and this agreement has stipulated that API realizes function in component software and how from API Calls component software, receives parameter and how this function turns back to API Calls component software by result.API Calls component software 2130 (for example operating system, storehouse, device driver, API, application program or other software modules), is carried out API Calls with access and is used the API being stipulated by API2120 to realize the characteristic of component software 2110 by API 2120.As the response to API Calls, API realizes component software 2110 can turn back to API Calls component software 2130 by value by API 2120.
Be appreciated that API realize component software 2110 can not comprise by API 2120 regulations and for API Calls component software 2130 disabled additional function, method, class, data structure and/or other characteristics.Should be appreciated that API Calls component software 2130 can realize component software 2110 on same system with API, or can be positioned at long-rangely, and realize component software 2110 by using API 2120 to visit API on network.Although accompanying drawing 21 show one with the mutual API Calls component software 2130 of API 2120, but it should be understood that other API Calls component softwares that use different language (or same-language) to write with API Calls component software 2130 also can be used API 2120.
API realizes component software 2110, API2120 and API Calls component software 2130 and can be stored in machine readable media, this medium comprises for for example, any mechanism with the readable form storage information of machine (, computer or other data handling systems).For example, the medium of machine-readable form comprises disk, CD, random asccess memory, read-only memory, flash memory device etc.
In the illustrative embodiments of accompanying drawing 22 (" software stack "), each application can be called and use several OS API that operating system (OS) is carried out and called serving 1 or 2 execution with several AP services I.Service 1 and 2 can be used several OS API that OS is carried out and called.
Note, service 2 has two API, and one of them (service 2 API 1) from applying that 1 reception is called and to its return value, and another (service 2 API 2) are from applying that 2 receptions are called and to its return value.Calling and from OS API 1 reception return value, serving 2 (can be for example software library) and carry out calling and receiving return value from OS API 1 and OS API 2 OS API 1 and OS API 2 OS API 1 carried out in service 1 (can be for example software library).Calling and receiving return value from OS API 2 OS API 2 carried out in application 2.
Example data treatment facility
Accompanying drawing 23 shows the block diagram of the exemplary computer system that can use in some embodiments of the present invention.Should understand, although accompanying drawing 23 shows the various assemblies of computer system, should not regard any concrete structure of having shown these assembly interconnects as, because these details are not closely related with the present invention.Will be recognized that other have less assembly or more the computer system of multicompartment also can be for the present invention.
As shown in Figure 23, computer system 2300 is a kind of forms of data handling system, comprise (one or more) bus 2350 for example, coupling with treatment system 2320, power supply 2325, memory 2330 and nonvolatile memory 2340 (, hard disk, flash memory, phase transition storage (PCM) etc.).Bus 2350 can be connected to each other by various bridges well known in the art, controller and/or adapter.Treatment system 2320 can obtain (one or more) instruction from memory 2330 and/or nonvolatile memory 2340, and carries out described instruction with executable operations in the manner described above.2350 pairs of said modules of bus interconnect and by those assembly interconnects for example, to selectable docking station (dock) 2360, display controller and display device 2370, input-output apparatus 2380 (, NIC (network interface unit), cursor are controlled (such as mouse, touch-screen, touch pad etc.), keyboard etc.) and optional transceiver 2390 (such as bluetooth, WIFI, infrared etc.).
Accompanying drawing 24 shows the block diagram of the example data treatment system that can use in some embodiments of the present invention.For example, data handling system 2400 can be Hand Personal Computer, personal digital assistant (PDA), mobile phone, portable game system, portable electronic device, dull and stereotyped or hand-held arithmetic unit, and this device can comprise mobile phone, media player and/or games system.As another example, data handling system 2400 can be network computer, or the embedded processing equipment of another device interior.
According to an embodiment of the invention, the exemplary configurations of data handling system 2400 can be applied to above-mentioned mobile device.Data handling system 2400 comprises treatment system 2420, and system 2420 can comprise the system on one or more microprocessors and/or an integrated circuit.Treatment system 2420 is couple to memory 2410, power supply 2425 (comprising one or more batteries), audio frequency I/O 2440, display controller and display device 2460, optional I/O 2450, input equipment 2470 and transceiver 2430.Should be appreciated that, other assemblies not shown in Figure 24 can be also parts for data handling system 2400 in specific embodiment of the present invention, and the system shown in Figure 24 of also can making a farfetched comparison in specific embodiment of the present invention adopts assembly still less.In addition, will be recognized that one or more buses (not shown in Figure 24) can be used to according to technology well known in the art, various assemblies be interconnected.
Memory 2410 can be stored data and/or the program for being carried out by data handling system 2400.Audio frequency I/O 2440 can comprise microphone and/or loud speaker, for example, and for playing music and/or telephony feature be provided by loud speaker and microphone.Display controller and display device 2460 can comprise graphical user interface (GUI).Wireless (for example, RF) transceiver 2430 (for example, WIFI transceiver, infrared transceiver, Bluetooth transceiving, wireless cell phone transceiver, etc.) can be used for communicating by letter with other data handling systems.Described one or more input equipment 2470 allows user to provide input to system.These input equipments can be keypad, keyboard, touch pad, and many touch pads, etc.Optional other I/O 2450 can be the connectors for docking station.
Embodiments of the present invention can comprise the various steps that propose above.These steps can realize with the executable instruction of machine, and described instruction can be so that universal or special processor be carried out these steps.Alternatively, these steps can be carried out the specialised hardware assembly of described step firmware hardwired logic used or carry out through the computer module of programming and the combination in any of custom hardware components by comprising.
Key element of the present invention can also provide for the machine readable media form of storage machine executable program code.Machine readable media can include but not limited to floppy disk, CD, and CD-ROM, magneto optical disk, ROM, RAM, EPROM, EEPROM, magnetic or light-card, or other are suitable for the media/machine readable media of store electrons program code.
In the above description, a large amount of details is proposed so that complete understanding of the present invention to be provided for illustration purpose.But it will be apparent to those skilled in the art that the present invention can not implement in the situation that there is no these details.For example, it will be apparent to those skilled in the art that functional module described here and method can realize with the form of software, hardware or its combination in any.In addition, although (that is, utilize mobile device 120-123 in mobile computing environment; 601-603) embodiments of the present invention are illustrated, but cardinal principle of the present invention is not limited to mobile computing, carry out.In fact, in some execution modes, can use client or the node data treatment facility of any type, for example, comprise desktop computer or work station.Thereby scope and spirit of the present invention should be judged in the mode of claims.

Claims (16)

1. a computer implemented method, for being point-to-point (" P2P ") connection setup by the first mobile computing device and keeping spare channel, described method comprises:
Set up the main P2P communication channel (606 between the first mobile computing device (601) and the second mobile computing device (603), 609) to open P2P session, described main P2P communication channel comprises two main communication links (606,609), each main communication link comprise with the first and second mobile computing devices in one (601; 603) the first network address transition NAT device (612 connecting; 613), wherein, the first and second mobile computing devices are less important P2P communication channel exchange secondary channel connection data in described main P2P communication channel;
Use described secondary channel connection data to set up one or more less important P2P communication channels (605,610; 605,609; 606,610; ), each less important P2P communication channel comprises two secondary communication links (605,610; 605,609; 606,610; ), each secondary communication link comprises and first NAT device (612 being connected in the first and second mobile computing devices; 613) or the second NAT device (611; 614) in one (612; 613; 611; 614; );
Only by described main P2P communication channel, transmit P2P data;
One that detects in described main communication link has declined to below assign thresholds;
Stop transmitting P2P data by the main P2P communication channel of decline; And
As response, by one in described less important P2P communication channel, be promoted to main P2P communication channel and interruptedly continue described P2P session with nothing.
2. the method for claim 1, further comprises:
By periodically send heartbeat in described less important P2P communication channel, divide into groups, keep described less important P2P communication channel.
3. the step of the method for claim 1, wherein setting up main P2P communication channel comprises: between the first and second mobile computing devices, exchange connection data.
4. method as claimed in claim 3, wherein, the step of exchange connection data further comprises: carry out a series of networks and connect and set up (" ICE ") affairs.
5. the method for claim 1, wherein described assign thresholds comprises the fault of described main P2P communication channel.
6. the method for claim 1, further comprises:
The current state of each in the connection data relevant with described one or more less important P2P communication channel with described main P2P communication channel and these communication channels is stored on memory device.
7. the method for claim 1, wherein, at least one communication link is one or more middle selections from following link: the third generation (" 3G ") radio honeycomb link, the 4th generation (" 4G ") radio honeycomb link, Wi-Fi link, and Bluetooth link.
8. the method for claim 1, wherein at least one main or less important P2P communication channel comprises the private network link between the first mobile computing device and the second mobile computing device.
9. a data handling system, for being point-to-point (" P2P ") connection setup by the first mobile computing device and keeping spare channel, described data handling system comprises:
For setting up main P2P communication channel between the first mobile computing device and the second mobile computing device to open the device of P2P session, described main P2P communication channel comprises two main communication links, each main communication link comprises and a first network address transition NAT device being connected in the first and second mobile computing devices, wherein, the first and second mobile computing devices are less important P2P communication channel exchange secondary channel connection data in described main P2P communication channel;
For using described secondary channel connection data to set up the device of one or more less important P2P communication channels, each less important P2P communication channel comprises two secondary communication links, and each secondary communication link comprises and in first NAT device being connected in the first and second mobile computing devices or the second NAT device one;
For only transmit the device of P2P data by described main P2P communication channel;
For detection of a device having declined to below assign thresholds in described main communication link;
For stopping transmitting by the main P2P communication channel of decline the device of P2P data; And
For being promoted to main P2P communication channel as response by one of described less important P2P communication channel, with nothing, interruptedly continue the device of described P2P session.
10. data handling system as claimed in claim 9, further comprises:
Be used for by periodically send the device that heartbeat divides into groups to keep described less important P2P communication channel in described less important P2P communication channel.
11. data handling systems as claimed in claim 9, wherein, comprise for setting up the device of main P2P communication channel: for exchange the device of connection data between the first and second mobile computing devices.
12. data handling systems as claimed in claim 11, wherein, further comprise for exchanging the device of connection data: for carrying out a series of networks, connect the device of setting up (" ICE ") affairs.
13. data handling systems as claimed in claim 9, wherein, described assign thresholds comprises the fault of described main P2P communication channel.
14. data handling systems as claimed in claim 9, further comprise:
For each current state of the connection data relevant with described one or more less important P2P communication channel with described main P2P communication channel and these communication channels is stored in to the device on memory device.
15. data handling systems as claimed in claim 9, wherein, at least one communication link is one or more middle selections from following link: the third generation (" 3G ") radio honeycomb link, the 4th generation (" 4G ") radio honeycomb link, Wi-Fi link, and Bluetooth link.
16. data processings as claimed in claim 9, wherein, at least one main or less important P2P communication channel comprises the private network link between the first mobile computing device and the second mobile computing device.
CN201010552053.6A 2010-04-07 2010-09-25 Apparatus and method for establishing and utilizing backup communication channels Active CN102215121B (en)

Applications Claiming Priority (4)

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

Publications (2)

Publication Number Publication Date
CN102215121A CN102215121A (en) 2011-10-12
CN102215121B true CN102215121B (en) 2014-10-15

Family

ID=43479274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010552053.6A Active CN102215121B (en) 2010-04-07 2010-09-25 Apparatus and method for establishing and utilizing backup communication channels

Country Status (1)

Country Link
CN (1) CN102215121B (en)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8879483B2 (en) 2011-10-17 2014-11-04 International Business Machines Corporation Multi-device monitoring and control using intelligent device channel sharing
CN102546105A (en) * 2011-12-28 2012-07-04 深圳市新为软件有限公司 Method and device for network resource transmission
CN105009519A (en) * 2012-11-23 2015-10-28 卡尔加里科技股份有限公司 Methods and systems for peer-to-peer discovery and connection from a collaborative application session
WO2014104627A1 (en) * 2012-12-30 2014-07-03 엘지전자 주식회사 Apparatus and method for performing device-to-device communication in wireless communication system
US9295015B2 (en) * 2013-02-12 2016-03-22 Intel IP Corporation Methods, wireless communication stations, and system for synchronizing devices and neighbor area networking (NAN) configuration
CN105722244B (en) * 2014-12-02 2020-07-24 联想(北京)有限公司 Information processing method and electronic equipment
CN105744046B (en) * 2014-12-08 2019-07-26 联想(北京)有限公司 A kind of information processing method and electronic equipment
WO2016108189A1 (en) * 2014-12-29 2016-07-07 Visa International Service Association Authorizing access to an application library
CN105991697A (en) * 2015-02-06 2016-10-05 深圳富泰宏精密工业有限公司 Point-to-point communication realization method and system
CN106161750B (en) * 2015-04-14 2020-03-24 联想(北京)有限公司 Information processing method and electronic equipment
CN105262853A (en) * 2015-09-23 2016-01-20 上海斐讯数据通信技术有限公司 Method, device and system for establishing network address translation (NAT) traversal path of peer-to-peer (P2P) connection
CN106209328B (en) * 2016-07-12 2019-09-06 邦彦技术股份有限公司 Intelligent redundant backup method and system for channel
CN106899493B (en) * 2017-02-22 2020-04-24 广东网金控股股份有限公司 Message pushing method and device based on UDP and http
CN107370764B (en) * 2017-09-05 2020-06-05 北京奇艺世纪科技有限公司 Audio and video communication system and audio and video communication method
CN109039915B (en) * 2018-08-24 2021-07-23 珠海迈越信息技术有限公司 Method and system for establishing data connection channel

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1209233A (en) * 1995-12-18 1999-02-24 艾利森公司 Satellite deversity scheme
CN101222551A (en) * 2006-12-30 2008-07-16 虹软(上海)科技有限公司 Using secondary channels to communicate ip addresses for point-to-point communication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1209233A (en) * 1995-12-18 1999-02-24 艾利森公司 Satellite deversity scheme
CN101222551A (en) * 2006-12-30 2008-07-16 虹软(上海)科技有限公司 Using secondary channels to communicate ip addresses for point-to-point communication

Also Published As

Publication number Publication date
CN102215121A (en) 2011-10-12

Similar Documents

Publication Publication Date Title
CN102215249B (en) Apparatus and method for matching users for online sessions
CN102215121B (en) Apparatus and method for establishing and utilizing backup communication channels
CN102215274B (en) Apparatus and method for inviting users to online sessions
KR101408560B1 (en) Apparatus and method for inviting users to online sessions
CN103348633B (en) For managing the apparatus and method of the point-to-point connection between different service providers
TWI458369B (en) Apparatus and method for establishing and utilizing backup communication channels
CN103597783B (en) System and method for secure instant messaging
US9130820B2 (en) Application programming interface, system, and method for collaborative online applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant