IP Library Granted Patent US 9,699,237
Granted Patent B2
US 9,699,237 · App. 14/672,280 · Granted Jul 4, 2017

Managed media relay selection for real-time communications

Inventors: Andreas E. Jansson (San Francisco, CA); Terje Strand (San Francisco, CA); Binod Pankajakshy Gangadharan (Bangalore, IN)
Assignee: Oracle International Corporation
H04L65/608H04L61/2575H04L61/2589H04L65/1006H04L65/1069H04L67/02H04L61/2514
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 9,699,237
App. No.
14/672,280
Granted
Jul 4, 2017
Kind
B2
Abstract

A system provides a media relay for real-time communications (“RTC”). The system receives, by a signaling server, a first signaling message from a first client including one or more first candidate transport addresses of the first client. The system generates a modified first signaling message by inserting a transport address of a relay server into the first signaling message, and transmits the modified first signaling message to a second client. Then, the system receives a second signaling message from the second client including one or more second candidate transport addresses of the second client. The system generates a modified second signaling message by inserting the transport address of the relay server into the second signaling message, and transmits the modified second signaling message to the first client.

Claims (66)

1. A non-transitory computer-readable medium having instructions stored thereon that, when executed by a processor, cause the processor to provide a media relay for real-time communications (RTC), the providing comprising:

receiving, by a signaling server, a first signaling message from a first client including one or more first candidate transport addresses of the first client;

generating a modified first signaling message by inserting a transport address of a relay server into the first signaling message;

transmitting the modified first signaling message to a second client;

receiving a second signaling message from the second client including one or more second candidate transport addresses of the second client;

generating a modified second signaling message by inserting the transport address of the relay server into the second signaling message; and

transmitting the modified second signaling message to the first client,

wherein the signaling server selects the relay server based on characteristics of at least one of the first client, the second client, or the RTC and in response to interactions with a JavaScript (JS) software development kit (SDK) at the first client.

2. The non-transitory computer-readable medium of claim 1 ,

wherein, before the receiving of the first signaling message, the JS SDK at the first client negotiates with the signaling server for determining a format for the first signaling message and for including the one or more first candidate transport addresses in the first signaling message.

3. The non-transitory computer-readable medium of claim 1 ,

wherein the first client and the second client start Interactive Connectivity Establishment (ICE) negotiation using the one or more first candidate transport addresses, the one or more second candidate transport addresses, and the transport address of the relay server.

4. The non-transitory computer-readable medium of claim 1 ,

wherein, upon receiving the first signaling message, the signaling server allocates an available internet protocol (IP) address and port on the relay server;

wherein the transport address of the relay server comprises the available IP address and port.

5. The non-transitory computer-readable medium of claim 1 ,

wherein the signaling server inserts the transport address of the relay server as a lowest priority candidate into the first signaling message and the second signaling message.

6. The non-transitory computer-readable medium of claim 1 ,

wherein the first signaling message includes only local candidates of the first client;

wherein the second signaling message includes only local candidates of the second client.

7. The non-transitory computer-readable medium of claim 1 ,

wherein, when the first client and the second client cannot create a direct connection using respective local candidates, the relay server is used to communicate real time transport protocol (RTP) streams between the first client and the second client.

8. A method of providing a media relay for real-time communications (RTC), comprising:

receiving, by a signaling server, a first signaling message from a first client including one or more first candidate transport addresses of the first client;

generating a modified first signaling message by inserting a transport address of a relay server into the first signaling message;

transmitting the modified first signaling message to a second client;

receiving a second signaling message from the second client including one or more second candidate transport addresses of the second client;

generating a modified second signaling message by inserting the transport address of the relay server into the second signaling message; and

transmitting the modified second signaling message to the first client,

wherein the signaling server selects the relay server based on characteristics of at least one of the first client, the second client, or the RTC and in response to interactions with a JavaScript (JS) software development kit (SDK) at the first client.

9. The method of claim 8 ,

wherein, before the receiving of the first signaling message, the JS SDK at the first client negotiates with the signaling server for determining a format for the first signaling message and for including the one or more first candidate transport addresses in the first signaling message.

10. The method of claim 8 ,

wherein the first client and the second client start Interactive Connectivity Establishment (ICE) negotiation using the one or more first candidate transport addresses, the one or more second candidate transport addresses, and the transport address of the relay server.

11. The method of claim 8 ,

wherein, upon receiving the first signaling message, the signaling server allocates an available internet protocol (IP) address and port on the relay server;

wherein the transport address of the relay server comprises the available IP address and port.

12. The method of claim 8 ,

wherein the signaling server inserts the transport address of the relay server as a lowest priority candidate into the first signaling message and the second signaling message.

13. The method of claim 8 ,

wherein the first signaling message includes only local candidates of the first client;

wherein the second signaling message includes only local candidates of the second client.

14. The method of claim 8 ,

wherein, when the first client and the second client cannot create a direct connection using respective local candidates, the relay server is used to communicate real time transport protocol (RTP) streams between the first client and the second client.

15. A system that provides a media relay for real-time communications (RTC), comprising:

a processor; and

a memory storing one or more programs for execution by the processor, the one or more programs including instructions for:

receiving, by a signaling server, a first signaling message from a first client including one or more first candidate transport addresses of the first client;

generating a modified first signaling message by inserting a transport address of a relay server into the first signaling message;

transmitting the modified first signaling message to a second client;

receiving a second signaling message from the second client including one or more second candidate transport addresses of the second client;

generating a modified second signaling message by inserting the transport address of the relay server into the second signaling message; and

transmitting the modified second signaling message to the first client,

wherein the signaling server selects the relay server based on characteristics of at least one of the first client, the second client, or the RTC and in response to interactions with a JavaScript (JS) software development kit (SDK) at the first client.

16. The system of claim 15 ,

wherein, before the receiving of the first signaling message, the JS SDK at the first client negotiates with the signaling server for determining a format for the first signaling message and for including the one or more first candidate transport addresses in the first signaling message.

17. The system of claim 15 ,

wherein the first client and the second client start Interactive Connectivity Establishment (ICE) negotiation using the one or more first candidate transport addresses, the one or more second candidate transport addresses, and the transport address of the relay server.

18. The system of claim 15 ,

wherein, upon receiving the first signaling message, the signaling server allocates an available internet protocol (IP) address and port on the relay server;

wherein the transport address of the relay server comprises the available IP address and port.

19. The system of claim 15 ,

wherein the signaling server inserts the transport address of the relay server as a lowest priority candidate into the first signaling message and the second signaling message.

20. The system of claim 15 ,

wherein the first signaling message includes only local candidates of the first client;

wherein the second signaling message includes only local candidates of the second client.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2015
From: JANSSON, ANDREAS E.; STRAND, TERJE; GANGADHARAN, BINOD PANKAJAKSHY
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 035283/0171 →
Continuity (1)
Related Publication 20160294913A1 · Oct 6, 2016