Abstract:
A quick relay communication protocol is used by an initiating communication device (such as a wearable electronic device, e.g., a smart watch) and/or a recipient communication device (such as a companion electronic device to the wearable electronic device, e.g., a smart phone, a tablet computer or a laptop computer) to selectively communicate messages via different communication channels. Based on available connections and a communication constraint associated with a message, a processor executing a program module in an application layer in the initiating communication device provides transmission instructions to an interface circuit in the initiating communication device, which transmits a message to the recipient communication device based on the transmission instructions. When there are currently no available connections and the message is eligible to be communicated through a cloud-based relay server, the processor establishes a cloud-based connection with the recipient communication device via the relay server.
Abstract:
A device implementing the subject technology may include at least one processor configured to receive an indication of a task being performed at an other device. The at least one processor is further configured to perform, in response to receipt of the indication, one or more preliminary operations in anticipation of receiving a handoff of the task. The at least one processor is further configured to receive, after performing the one or more preliminary operations, a notification that the task is being handed off. The at least one processor is further configured to receive the handoff of the task from the other device. The at least one processor is further configured to continue to perform the task based at least in part on the one or more preliminary operations that were performed prior to receiving the notification that the task is being handed off.
Abstract:
When direct communication between devices, such as via Bluetooth, is unavailable, a communication protocol is used by an initiating communication device and/or a recipient communication device to establish a communication session via a cloud-based relay server. This communication protocol efficiently allocates (or binds) the initiating communication device, the recipient communication device, and the relay server together for the communication session. The communication protocol may include handshaking messages that specify a transport type and channel used for connections in the communication session, as well as an address of the relay server. After the communication session is confirmed, the communication protocol allows the initiating communication device and the recipient communication device to share messages even when physically separated from each other.
Abstract:
Some embodiments relate to a device that transmits/receives encrypted communications with another device. A first device, such as a smart phone or smart watch, may generate a message associated with a certain data class, which may determine the security procedure used in the communication of the message. The first device may establish an encryption session for the purpose of communicating the message to a second device. Prior to sending the message, the first device may wait until encryption credentials are accessible according to certain conditions, which may be determined at least in part by the data class of the message. Similarly, after receiving the message, the second device may not be able to decrypt the message until encryption credentials are accessible according to certain conditions, which may be determined at least in part by the message data class.
Abstract:
Establishing a communication channel via a relay server with reduced setup time. Upon request by an initiating communication device a relay allocation server may allocate a single relay server for use in a communication session between the initiating communication device and one or more recipient communication devices. The relay server may be selected to perform favorably for the initiating communication device. Messaging for establishment of the communication session may be performed using persistent messaging connections, to avoid connection establishment cost. Messaging may also be performed using address tokens to avoid the cost of discovering global IP addresses. Following establishment of the communication session, the relay server may discover the IP address of one or more recipient communication devices, and may initiate reallocation of those devices to another relay server.
Abstract:
Methods, systems, and apparatuses are provided for managing communication of data to/from a device. For example, multiple client applications running on the device can communicate to a second device through a same primary socket connection. A mux module can receive data from two different client applications over respective client connections. The received data can include header information identifying the second device as the destination. When the first data from a first client application is received at the mux module, the primary socket connection can be created; and when the second data from a second client application is received, the existing primary socket connection can be identified and re-used. The primary socket connection can be managed by a controller of the mux module.
Abstract:
Some embodiments relate to a device that transmits/receives encrypted communications with another device. A first device, such as a smart phone or smart watch, may generate a message associated with a certain data class, which may determine the security procedure used in the communication of the message. The first device may establish an encryption session for the purpose of communicating the message to a second device. Prior to sending the message, the first device may wait until encryption credentials are accessible according to certain conditions, which may be determined at least in part by the data class of the message. Similarly, after receiving the message, the second device may not be able to decrypt the message until encryption credentials are accessible according to certain conditions, which may be determined at least in part by the message data class.
Abstract:
Techniques are disclosed relating to multiway communications. In some embodiments, a first electronic device initiates a multiway call between a plurality of electronic devices and exchanges a first secret with a first set of electronic devices participating during a first portion of the multiway call, the first secret being used to encrypt traffic between the first set of electronic devices. The first electronic device receives an indication that first set of participating electronic devices has changed and, in response to the indication, exchanges a second secret with a second set of electronic devices participating during a second portion of the multiway call, the second secret being used to encrypt traffic between the second set of participating electronic devices. In some embodiments, the indication identifies a second electronic device as leaving the multiway call, and the second secret is not exchanged with the second electronic device.
Abstract:
Establishing a communication channel via a relay server with reduced setup time. Upon request by an initiating communication device a relay allocation server may allocate a single relay server for use in a communication session between the initiating communication device and one or more recipient communication devices. The relay server may be selected to perform favorably for the initiating communication device. Messaging for establishment of the communication session may be performed using persistent messaging connections, to avoid connection establishment cost. Messaging may also be performed using address tokens to avoid the cost of discovering global IP addresses. Following establishment of the communication session, the relay server may discover the IP address of one or more recipient communication devices, and may initiate reallocation of those devices to another relay server.
Abstract:
A quick relay communication protocol is used by an initiating communication device (such as a wearable electronic device, e.g., a smart watch) and/or a recipient communication device (such as a companion electronic device to the wearable electronic device, e.g., a smart phone, a tablet computer or a laptop computer) to selectively communicate messages via different communication channels. Based on available connections and a communication constraint associated with a message, a processor executing a program module in an application layer in the initiating communication device provides transmission instructions to an interface circuit in the initiating communication device, which transmits a message to the recipient communication device based on the transmission instructions. When there are currently no available connections and the message is eligible to be communicated through a cloud-based relay server, the processor establishes a cloud-based connection with the recipient communication device via the relay server.