IP Library › Granted Patent US 10,728,144
Granted Patent B2
US 10,728,144 · App. 15/696,135 · Granted Jul 28, 2020

Routing virtual area based communications

Inventors: Robert J. Butler (Kirkland, WA); Joseph Altmaier (North Liberty, IA); David Van Wie (Eugene, OR)
Assignee: Sococo, Inc.
H04L45/54G06T11/60G06T13/40G06T15/205G06T17/05G06T19/006G06T19/20H04L65/4069H04L65/605H04L67/38G06T2200/04G06T2207/10012G06T2207/10016G06T2207/10072G06T2207/30196G06T2215/16G06T2219/024G06T2219/2004
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,728,144
App. No.
15/696,135
Granted
Jul 28, 2020
Kind
B2
Abstract

In association with a virtual area, a first network connection is established with a first network node present in the virtual area and a second network connection is established with a second network node present in the virtual area. Based on stream routing instructions, a stream router is created between the first network node and the second network node. The stream router includes a directed graph of processing elements operable to receive network data, process the received network data, and output the processed network data. On the first network connection, an input data stream derived from output data generated by the first network node is received in association with the virtual area. The input data stream is processed through the stream router to produce an output data stream. On the second network connection, the output data stream is sent to the second network node.

Claims (33)

1. A method of routing data streams between client network nodes in connection with a virtual area that supports establishment of communicant presence, the method comprising, by a computer system:

routing one or more data streams of a first data stream type over a first type of network connection between client network nodes of users who are copresent in the virtual area;

responsive to an event that satisfies a switching predicate, ascertaining a second type of network connection between client network nodes of users who are copresent in the virtual area, wherein the first and second types of network connection are different, and the switching predicate is based on one or more of a count of client network nodes of users who are copresent in the virtual area, one or more types of data streams being communicated between client network nodes of the copresent users, bandwidth capabilities of client network nodes of the copresent users, attributes of the virtual area, and network latencies experienced by client network nodes of the copresent users;

responsive to a determination that a network connection of the second type currently exists, routing one or more data streams of the first data stream type over the second type of network connection between client network nodes of users who are copresent in the virtual area, and tearing down the one or more corresponding network connections of the first type; and

responsive to a determination that the second type of network connection currently does not exist, establishing one or more network connections of the second type, and routing one or more data streams of the first data stream type over the established second type of network connection between client network nodes of users who are copresent in the virtual area.

2. The method of claim 1 , wherein the virtual area is associated with a first switching rule that defines a first communication property of the virtual area in terms of connections of sources to sinks of the first data stream type between ones of the client network nodes of users who are copresent in the virtual area.

3. The method of claim 1 , wherein satisfaction of the switching predicate is based on a count of client network nodes of the copresent users who are communicating streams of the first data stream type in the virtual area exceeding a threshold number.

4. The method of claim 1 , wherein satisfaction of the switching predicate is based on respective bandwidth capabilities of client network nodes of the copresent users who are communicating streams of the first data stream type in the virtual area.

5. The method of claim 1 , wherein satisfaction of the switching predicate is based on respective current network latencies experienced by the client network nodes of the copresent users who are communicating streams of the first data stream type in the virtual area.

6. The method of claim 1 , wherein satisfaction of the switching predicate is based on respective packet losses experienced by the client network nodes of the copresent users who are communicating streams of the first data stream type in the virtual area.

7. The method of claim 1 , wherein satisfaction of the switching predicate is based on attribute values associated with positions in the virtual area in which the users are copresent.

8. The method of claim 1 , wherein the first data stream type is audio data.

9. The method of claim 8 , further comprising routing one or more data streams of the second data stream type, wherein the second data stream type is video data.

10. The method of claim 1 , further comprising, after the establishing, reconfiguring one or more network connections of the first type as one or more standby routes between the client network nodes of users who are copresent in the virtual area.

11. The method of claim 1 , wherein the first type of network connection corresponds to a peer-to-peer connection between client network nodes of users who are copresent in the virtual area, and the second type of network connection corresponds to connections between client network nodes of users who are copresent in the virtual area that are mediated at least in part by a server network node.

12. The method of claim 1 , wherein: before the event, one or more data streams of a second data stream type are routed over the second type of network connection between client network nodes of users who are copresent in the virtual area.

13. The method of claim 1 , wherein: after the event, one or more data streams of a second data stream type are routed over the second type of network connection.

14. The method of claim 1 , wherein the first type of network connection is peer-to-peer and the second type of network connection is mediated at least in part by a server network node.

15. The method of claim 1 , further comprising, after routing the one or more data streams of the first data stream type over the first type of network connection, tearing down corresponding network connections of the first type.

16. A system for routing data streams between client network nodes in connection with a virtual area associated with a switching rule that defines connections of sources to sinks of a particular data stream type between ones of the client network nodes of users who are copresent in the virtual area, the system comprising

at least one memory storing processor-readable instructions, and

at least one processor, operable to execute the instructions, and based at least in part on the execution of the instructions operable to perform operations comprising:

routing one or more data streams of a first data stream type over a first type of network connection between the client network nodes of users who are copresent in the virtual area;

based on an event that satisfies a topology switching predicate, configuring one or more network connections of a second type between the client network nodes of users who are copresent in the virtual area, wherein the first and second types of network connection are different;

based on a determination that one or more connections of the second type currently exist, administering transmission of one or more data streams of the first data stream type over the second type of network connection between client network nodes of users who are copresent in the virtual area, and tearing down the one or more corresponding connections of the first type; and

based on a determination that one or more connections of the second type currently do not exist, configuring the one or more connections of the second type, and administering transmission of one or more data streams of the first data stream type over the established second type of network connection between client network nodes of users who are copresent in the virtual area.

17. The system of claim 16 , wherein satisfaction of the switching predicate comprises a count of client network nodes of the copresent users who are communicating streams of the first data stream type in the virtual area exceeding a threshold number.

18. A computer program product for execution by a computer system and comprising at least one non-transitory computer-readable medium having computer-readable program code portions embodied therein, the computer-readable program code portions comprising:

an executable code portion configured to route one or more data streams of a first data stream type over a first type of network connection between client network nodes of users who are copresent in the virtual area;

an executable code portion configured to determine, based on an event that satisfies a switching predicate, one or more network connections of a second type between client network nodes of users who are copresent in the virtual area, wherein the first and second types of network connection are different;

an executable code portion configured, based on a determination that one or more connections of the second type currently exist, to route one or more data streams of the first data stream type over the second type of network connection between the client network nodes of users who are copresent in the virtual area, and further to tear down the one or more corresponding connections of the first type;

an executable code portion configured to establish, based on a determination that one or more connections of the second type currently do not exist, the one or more connections of the second type, and administer transmission of one or more data streams of the first data stream type over the established second type of network connection between client network nodes of users who are copresent in the virtual area.

19. The computer program product of claim 18 , wherein satisfaction of the switching predicate comprises a count of client network nodes of the copresent users who are communicating streams of the first data stream type in the virtual area exceeding a threshold number.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2017
From: BUTLER, ROBERT J.; ALTMAIER, JOSEPH
To: SOCIAL COMMUNICATIONS COMPANY
Reel/Frame 043605/0023 →
CHANGE OF NAME Recorded Sep 15, 2017
From: SOCIAL COMMUNICATIONS COMPANY
To: SOCOCO, INC.
Reel/Frame 043867/0653 →
Continuity (15)
Continuation 14810371 · Jul 27, 2015
Continuation 13763913 · Feb 11, 2013
Continuation In Part 14722156 · May 27, 2015
Continuation 14045562 · Oct 3, 2013
Division 12630973 · Dec 4, 2009
Continuation In Part 14251505 · Apr 11, 2014
Continuation 13422757 · Mar 16, 2012
Continuation 12418243 · Apr 3, 2009
Continuation In Part 13404453 · Feb 24, 2012
Continuation 12818517 · Jun 18, 2010
Continuation 11923629 · Oct 24, 2007
Provisional Application 61597757 · Feb 11, 2012
Provisional Application 61120372 · Dec 5, 2008
Provisional Application 61042714 · Apr 5, 2008
Related Publication 20170373969A1 · Dec 28, 2017