# US 10,771,437 B2 · Systems and methods for delivering messages over a network

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,771,437 B2
- Document ID: US10771437B2
- Status: Granted
- Kind: B2
- Application number: 16/025,385
- Filed: 2018-07-02
- Published: 2018-10-25
- Granted: 2020-09-08
- Earliest claimed: 2009-11-16
- Assignees: Sling Media, Inc.
- Applicants: Sling Media L.L.C.
- Inventors: John Michael Paul; Mark David Melin; Sylvain Jack Niles; Myles Patrick Cagney
- Web page: https://patentgrep.com/patent/US10771437B2

## CPC

- H04L 63/029: {Firewall traversal, e.g. tunnelling or, creating pinholes}
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04L 67/142: Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Systems and methods are described for delivering messages from one or more service hosts to clients via a network. A first request identifying the client is received at the message server, and a connection is established and maintained between the message server and the client in response to the first request. When a subsequent request that identifies the client is received from the service host, a message is transmitted from the message server to the client over the previously-established connection. The methods and techniques may be used, for example, to provide messages from various services to placeshifting devices or other clients communicating via the network.

## Claims

### Claim 1

An automated process executable by a computer system operating as a message server communicating via a network with a client device, the automated process comprising:
receiving a first message from the client device at the message server via the network;
in response to the first message, the message server establishing a connection between the message server and the client device via the network;
maintaining the connection between the message server and the client device as a persistent connection;
subsequently receiving an instruction message by the message server from a network service that is separate from the message server that identifies the client device; and
in response to the instruction message received from the network service, the message server sending a message to the client device via the persistent connection previously established between the message server and the identified client device to direct the identified client device to establish an outgoing connection to the network service that is identified in the instruction message.

### Claim 2 (depends on 1)

The automated process of claim 1 wherein the client device operates behind a firewall that resides between the client device and the network, and wherein the instruction directs the client device to establish the outgoing connection from behind the firewall.

### Claim 3 (depends on 1)

The automated process of claim 1 wherein the maintaining comprises transmitting keep-alive messages to the client device via the persistent connection.

### Claim 4 (depends on 3)

The automated process of claim 3 wherein the connection is a transmission control protocol (TCP) connection.

### Claim 5 (depends on 1)

The automated process of claim 1 wherein client device is a digital video recorder and wherein the instruction provides programming instructions to the digital video recorder.

### Claim 6 (depends on 1)

The automated process of claim 1 wherein the client device is identified by a hash value of an identifier associated with the client device.

### Claim 7 (depends on 1)

The automated process of claim 1 wherein the client device is a placeshifting device, and wherein the message identifies a requesting device to the placeshifting device to allow the placeshifting device to directly contact the requesting device by initiating an outgoing connection to the requesting device from behind a firewall that isolates the placeshifting device from the network.

### Claim 8

A data processing system to process messages to a plurality of client devices that are each operating behind firewalls on a network, the data processing system comprising:
a plurality of different service hosts each having a memory and a processor that is configured to provide a service on the network;
a plurality of message servers each implemented as digital computer systems; and
a load balancer device configured to receive connection requests from each of the plurality of client devices that are operating behind firewalls, wherein the load balancer is configured to assign each of the connection requests to one of the plurality of message servers and wherein each message server is configured to establish and maintain persistent connections with at least some of the plurality of client devices that are operating behind firewalls, to receive messages intended for the client devices from each of the plurality of service hosts, and to transmit the messages from the plurality of service hosts to the client devices that are operating behind firewalls over the persistent connections to direct the client devices to transmit outgoing messages through the firewalls that respond directly to the service hosts.

### Claim 9 (depends on 8)

The data processing system of claim 8 wherein the load balancer device is further configured to determine information about each of the plurality of client devices that are operating behind firewalls based upon the connection requests, and to assign each of the connection requests based upon the information.

### Claim 10 (depends on 9)

The data processing system of claim 9 wherein the information about each of the device operating behind firewalls comprises a type of device, and wherein the load balancer device is configured to determine the type of device from an identifier contained in one of the connection requests.

### Claim 11 (depends on 8)

The data processing system of claim 8 wherein the load balancer device is further configured to determine location information about each of the devices that are operating behind firewalls based upon the connection requests, and to assign each of the connection requests based upon the location information.

### Claim 12 (depends on 11)

The data processing system of claim 11 wherein the load balancer device is further configured to determine the location information about each of the devices that are operating behind firewalls from network addresses associated with the connection requests.

### Claim 13 (depends on 8)

The data processing system of claim 8 wherein each of the persistent connections is established in response to one of the plurality of message servers receiving an assigned connection request from the load balancer.

### Claim 14 (depends on 8)

The data processing system of claim 8 further comprising a service load balancer configured to receive each of the messages from the at least one service host and to direct each of the messages to one of the plurality of message servers that maintains the persistent connection to one of the devices that are operating behind firewalls identified in the message.

### Claim 15 (depends on 8)

The data processing system of claim 8 wherein the client devices are digital video recorders, and wherein at least some of the messages transmitted to the digital video recorders comprise programming instructions.
