IP Library Granted Patent US 10,812,421
Granted Patent B2
US 10,812,421 · App. 15/895,476 · Granted Oct 20, 2020

Conveying instant messages via HTTP

Inventors: Ehren A. Kret (Sunnyvale, CA); Bryan D. O'Connor (Atherton, CA)
Assignee: WHATSAPP INC.
H04L51/04H04L67/02H04L67/125H04L67/42
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,812,421
App. No.
15/895,476
Granted
Oct 20, 2020
Kind
B2
Abstract

A system and methods are provided for conveying connection-oriented communications (e.g., textual messages among multiple users) via a protocol such as HTTP (Hypertext Transfer Protocol). When a device operating a communication application that features a custom application layer protocol for formatting messages for transmission cannot connect to the system hosting the application using a default protocol stack that include the custom application layer protocol, it instead connects using HTTP's chunked mode of transfer encoding. Each outgoing communication is encapsulated in a separate HTTP chunk, and communications to multiple different users may be conveyed via the one connection. Incoming communications (e.g., from the multiple users) are received as separate chunks and are unwrapped or de-encapsulated to retrieve the communication for presentation to a user.

Claims (43)

1. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to:

receive, at a relay server, a request from a first client device to open a custom bi-directional communication connection between the first client device and a second client device via the relay server, the custom communication connection employing a custom application layer protocol of an application;

determine that use of the custom application layer protocol is prohibited;

transmit an error message to the first client device indicating that the connection attempt is rejected;

establish a communication connection with the application on the first client device using a HTTP chunked mode of transfer encoding;

receive an HTTP chunk from the first client device, encapsulating a communication from the application formatted according to the custom application layer protocol; and

transmit the HTTP chunk to a corresponding application on the second client device.

2. The medium of claim 1 , wherein the HTTP chunk received on a communication connection established in response to the error message.

3. The medium of claim 1 , wherein the application provides instant communications between users of the application.

4. The medium of claim 1 , further storing instructions for receiving a new HTTP chunk from the second client device, the new HTTP chunk comprising a second communication formatted according to the custom application layer protocol.

5. The medium of claim 4 , wherein:

the communication connection is an HTTP connection opened by the first client device; and

the new HTTP chunk is transmitted to the first client device before the HTTP connection is closed by the first client device.

6. The medium of claim 4 , further storing instructions for terminating the connection with the first client device without sending a final HTTP chunk of size zero.

7. A method comprising:

receiving, at a relay server, a request from a first client device to open a custom bi-directional communication connection between the first client device and a second client device via the relay server, the custom communication connection employing a custom application layer protocol of an application;

determining that use of the custom application layer protocol is prohibited;

transmitting an error message to the first client device indicating that the connection attempt is rejected;

establishing a communication connection with the application on the first client device using a HTTP chunked mode of transfer encoding;

receiving an HTTP chunk from the first client device encapsulating a communication from the application formatted according to the custom application layer protocol; and

transmitting the HTTP chunk to a corresponding application on the second client device.

8. The method of claim 7 , wherein the HTTP chunk received on a communication connection established in response to the error message.

9. The method of claim 7 , wherein the application provides instant communications between users of the application.

10. The method of claim 7 , further comprising receiving a new HTTP chunk from the second client device, the new HTTP chunk comprising a second communication formatted according to the custom application layer protocol.

11. The method of claim 10 , wherein:

the communication connection is an HTTP connection opened by the first client device; and

the new HTTP chunk is transmitted to the first client device before the HTTP connection is closed by the first client device.

12. The method of claim 10 , further comprising terminating the connection with the first client device without sending a final HTTP chunk of size zero.

13. An apparatus comprising:

a processor;

memory containing instructions that, when executed by the processor, because the apparatus to:

receive, at a relay server, a request from a first client device to open a custom bi-directional communication connection between the first client device and a second client device via the relay server, the custom communication connection employing a custom application layer protocol of an application;

determine that use of the custom application layer protocol is prohibited;

transmit an error message to the first client device indicating that the connection attempt is rejected;

establish a communication connection with the application on the first client device using a HTTP chunked mode of transfer encoding;

receive an HTTP chunk from the first client device, encapsulating a communication from the application formatted according to the custom application layer protocol and

transmit the HTTP chunk to a corresponding application on the second client device.

14. The apparatus of claim 13 , wherein the HTTP chunk received on a communication connection established in response to the error message.

15. The apparatus of claim 13 , wherein the network interface is further configured to receive a new HTTP chunk from the second client device, the new HTTP chunk comprising a second communication formatted according to the custom application layer protocol.

16. The apparatus of claim 15 , wherein:

the communication connection is an HTTP connection opened by the first client device; and

the new HTTP chunk is transmitted to the first client device before the HTTP connection is closed by the first client device.

17. The apparatus of claim 15 , wherein the processor is further configured to terminate the connection with the first client device without sending a final HTTP chunk of size zero.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2022
From: KRET, EHREN A.; O'CONNOR, BRYAN D.
To: WHATSAPP INC.
Reel/Frame 061781/0043 →
CHANGE OF NAME Recorded Jun 22, 2021
From: WHATSAPP INC.
To: WHATSAPP LLC
Reel/Frame 056646/0001 →
Continuity (2)
Continuation 14447407 · Jul 30, 2014
Related Publication 20180176157A1 · Jun 21, 2018