Patent ID: 8412833

Claim:
A computer-implemented method for establishing peer-to-peer (“P2P”) communication between mobile devices comprising: receiving an invitation request at an invitation service external to the mobile devices to open a P2P communication channel from a first mobile device, the invitation request including an identifier of a second mobile device and network information related to a network configuration of the first mobile device; using the identifier of the second mobile device to identify a push notification service identifier for the second mobile device; identifying the second mobile device at a push notification service external to the mobile devices using the push notification service identifier and pushing the invitation request from the push notification service to the second mobile device; receiving a response from the second mobile device at the invitation service, the response including an acceptance of the invitation and network information related to a network configuration of the second mobile device; the invitation service evaluating the network information of the first mobile device and the second mobile device to determine whether a direct P2P connection between the first mobile device and the second mobile device is feasible, wherein upon determining that a direct P2P connection between the first mobile device and the second mobile device is feasible, the invitation service transmitting the acceptance of the invitation to the first mobile device with connection data for the second mobile device usable by the first mobile device to establish a peer-to-peer connection with the second mobile device; receiving a request from the invitation service at a relay service external to the mobile devices to establish a relay connection between the first mobile device and the second mobile device upon the invitation service determining that a direct P2P connection between the first mobile device and the second mobile device is infeasible, the invitation service identifying relay service network information associated with the relay service, and forwarding the relay service network information to the first and second mobile devices; the first and second mobile devices using the relay service network information to connect with the relay service; and responsively establishing a connection between the first and second mobile devices via the relay service.