U.S. patent application number 14/851200 was filed with the patent office on 2016-01-07 for selection of proxy device for connection pooling.
The applicant listed for this patent is MICROSOFT TECHNOLOGY LICENSING, LLC. Invention is credited to JOHN R. BURKHARDT, RANSOM RICHARDSON, JASON SCHLEIFER.
Application Number | 20160006827 14/851200 |
Document ID | / |
Family ID | 47294058 |
Filed Date | 2016-01-07 |
United States Patent
Application |
20160006827 |
Kind Code |
A1 |
SCHLEIFER; JASON ; et
al. |
January 7, 2016 |
SELECTION OF PROXY DEVICE FOR CONNECTION POOLING
Abstract
Methods, systems, and computer storage media are provided for
communicating with client devices by way of a proxy device. An
indication is received that multiple client devices are attempting
to communicate with a shared service over a wide area network, such
as the Internet. A server provides a first client device with a
list of other client devices that are currently in communications
with the shared service. Once a proxy device has been selected, the
server receives an identification of that proxy device from the
first client device so that the server knows that future
communications from the first client device will be received
through the proxy device. Data is then communicated to and from the
shared service by way of the proxy device.
Inventors: |
SCHLEIFER; JASON;
(CAMBRIDGE, MA) ; BURKHARDT; JOHN R.; (ARLINGTON,
MA) ; RICHARDSON; RANSOM; (BEVERLY, MA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
MICROSOFT TECHNOLOGY LICENSING, LLC |
REDMOND |
WA |
US |
|
|
Family ID: |
47294058 |
Appl. No.: |
14/851200 |
Filed: |
September 11, 2015 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13156861 |
Jun 9, 2011 |
|
|
|
14851200 |
|
|
|
|
Current U.S.
Class: |
709/202 |
Current CPC
Class: |
H04L 67/2814 20130101;
H04L 67/289 20130101; H04L 67/38 20130101 |
International
Class: |
H04L 29/08 20060101
H04L029/08; H04L 29/06 20060101 H04L029/06 |
Claims
1. One or more computer storage media storing computer-useable
instructions that, when used by one or more computing devices,
cause the one or more computing devices to perform a method of
communicating data to one or more client devices by way of a proxy
device, the method comprising: at a remote server, selecting a
proxy device that will communicate with the remote server on behalf
of the one or more client devices, wherein the selection of the
proxy device indicates to the remote server that future
communications to the one or more client devices will be
communicated through the proxy device, and wherein the proxy device
is selected from a plurality of proxy devices based on one or more
of, (1) a connection type, (2) a speed, (3) other communications
currently in progress, or (4) wired or wireless capabilities; and
communicating data from the remote server to the one or more client
devices by way of the proxy device through a wide area network.
2. The one or more computer storage media of claim 1, wherein the
one or more client devices have a common geographical location.
3. The one or more computer storage media of claim 1, wherein the
selecting comprises receiving an indication that the one or more
client devices are to receive communications from the remote server
by way of the wide area network.
4. The one or more computer storage media of claim 1, wherein the
one or more client devices comprise a first client device and a
second client device that are attempting to communicate with a
shared service.
5. The one or more computer storage media of claim 1, wherein the
remote server monitors which of the one or more client devices are
currently in a communications session with a shared service.
6. The one or more computer storage media of claim 3, wherein the
proxy device is selected by the remote server from a plurality of
proxy devices having different properties.
7. The one or more computer storage media of claim 4, wherein the
remote server is used by the first and second client devices for
communication with the shared service.
8. The one or more computer storage media of claim 1, wherein the
remote server monitors which devices are registered as proxy
devices.
9. The one or more computer storage media of claim 1, wherein the
remote server receives a single communication stream from the proxy
device when the proxy device is communicating with the remote
server on behalf of the one or more client devices.
10. The one or more computer storage media of claim 1, wherein the
proxy device receives a single communication stream from the remote
server when the remote server is communicating with the one or more
client devices by way of the proxy device.
11. The one or more computer storage media of claim 1, wherein the
remote server notifies the one or more client devices as to an
identity of the proxy device.
12. The one or more computer storage media of claim 11, wherein the
proxy device is selected based on it being better able to
communicate with the remote server.
13. A system for communicating data to one or more client devices
by way of a proxy device, the system comprising: a remote server
having one or more processors and one or more computer-readable
storage media, the remote server configured to: determine that data
is to be communicated to one or more client devices; identify a
proxy device through which the data is to be communicated to the
one or more client devices, wherein the identifying of the proxy
device is based on one or more of, (1) a connection type, (2) a
speed, (3) other communications currently in progress, or (4) wired
or wireless capabilities; and communicate the data to the one or
more client devices by way of the proxy device.
14. The system of claim 13, further comprising: one or more proxy
devices configured to communicate data with the one or more client
devices and with the remote server such that the remote server can
communicate the data to the one or more client devices by way of
one of the one or more proxy devices.
15. The system of claim 13, further comprising: the one or more
client devices that are attempting to communicate data with the
remote server.
16. The system of claim 13, wherein the remote server is further
configured to detect that the one or more client devices are in a
communications session with a shared service associated with the
remote server.
17. The one or more computer storage media of claim 16, wherein the
remote server identifies the proxy device based on the proxy device
being better able to communicate with the remote server.
18. One or more computer storage media storing computer-useable
instructions that, when used by one or more computing devices,
cause the one or more computing devices to perform a communicating
data to one or more client devices by way of a proxy device, the
method comprising: at a remote server, determining that data is to
be communicated to one or more client devices; identifying a proxy
device through which the data is to be communicated to the one or
more client devices, wherein the identifying of the proxy device is
based on one or more of, (1) a connection type, (2) a speed, (3)
other communications currently in progress, or (4) wired or
wireless capabilities; and communicating the data to the one or
more client devices by way of the proxy device.
19. The one or more computer storage media of claim 19, further
comprising detecting, at the remote server, that the one or more
client devices are attempting to communicate with a shared service
that is associated with the remote server.
20. The one or more computer storage media of claim 19, wherein the
proxy device is identified based on it being better able to
communicate with the remote server.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority to and is a continuation of
U.S. patent application Ser. No. 13/156,861 filed on Jun. 9, 2011,
entitled "SELECTION OF PROXY DEVICE FOR CONNECTION POOLING," which
is incorporated herein by reference in its entirety.
BACKGROUND
[0002] With improved connectivity and access of computers and other
devices to various networks, it has become commonplace for
different programs, or clients, to share access to the same
information, such as shared services, which may include data
objects. Typically, for each client device attempting to access a
shared service, a single network connection. In some situations,
however, multiple client devices may be attempting to communicate
with the same shared service, and each of these devices may be
locally connected such that they communicate over a local area
network. Still, in these situations, each client device utilizes
its own unique communication channel through a wide area network to
the shared service. This results in increased data center costs to
support each device individually. This may also result in slower
data transfer between each client device and the shared
service.
SUMMARY
[0003] This summary is provided to introduce a selection of
concepts in a simplified form that are further described below in
the Detailed Description. This summary is not intended to identify
key features or essential features of the claimed subject matter,
nor is it intended to be used as an aid in determining the scope of
the claimed subject matter.
[0004] Embodiments of the present invention relate to the use of a
proxy device to communicate with a shared service for multiple
network connected devices all interested in communicating with the
same shared service. For instance, a Smartphone, a laptop, and a
gaming system may each be interested in communicating with the same
gaming application available online. Each of these devices may be
able to share a single Internet connection and may be able to
communicate with each other by way of a local area network. In this
case, instead of each of the three client devices individually
communicating with the gaming application online, one of the three
client devices may be selected as the proxy device, or connection
pooler, such that the other two client devices communicate with the
gaming application through the proxy device. This has numerous
advantages, including time savings, bandwidth savings, etc. for
both the client devices and the server that is associated with the
gaming application. In one embodiment, the proxy device is selected
by the client devices based on a list sent by the server of one or
more other client devices that are currently registered with the
shared service.
BRIEF DESCRIPTION OF THE DRAWINGS
[0005] The present invention is described in detail below with
reference to the attached drawing figures, wherein:
[0006] FIG. 1 depicts a block diagram of an exemplary computing
environment suitable for use in implementing embodiments of the
present invention;
[0007] FIG. 2 depicts a block diagram that illustrates a computing
environment suitable for embodiments of the present invention;
[0008] FIG. 3 depicts a block diagram illustrating multiple network
connected devices routing data through a connection pooler, in
accordance with embodiments of the present invention;
[0009] FIG. 4 illustrates a flow diagram showing a method for
communicating with two or more client devices by way of a proxy
device, in accordance with an embodiment of the present invention;
and
[0010] FIG. 5 illustrates a flow diagram showing a method for
communicating with a shared service by way of a proxy device, in
accordance with an embodiment of the present invention.
DETAILED DESCRIPTION
[0011] The subject matter of the present invention is described
with specificity herein to meet statutory requirements. However,
the description itself is not intended to limit the scope of this
patent. Rather, the inventors have contemplated that the claimed
subject matter might also be embodied in other ways, to include
different steps or combinations of steps similar to the ones
described in this document, in conjunction with other present or
future technologies. Moreover, although the terms "step" and/or
"block" may be used herein to connote different elements of methods
employed, the terms should not be interpreted as implying any
particular order among or between various steps herein disclosed
unless and except when the order of individual steps is explicitly
described.
[0012] Embodiments of the present invention are directed to methods
and systems for the use of a proxy device or connection pooler to
pool all communications from multiple other client devices when
these devices are in communications with the same shared service.
In one embodiment, a server associated with a particular shared
service detects that two or more client devices are currently
registered with, or are currently in communications with that
shared service. The server may send a list of these client devices
to each currently registered client device. Each client device uses
this list to determine which of the other client devices in the
list are locally connected to it, such as by way of a local area
network. When it determines that one or more of the client devices
are locally connected, those locally connected devices communicate
with each other to determine which will act as the proxy device for
the other client devices. In one embodiment, the server sends a
list of only those client devices that are registered as proxy
devices, such as if they have previously acted as a proxy device
for other client devices or if they are physically suited to
operate as a proxy device. A device may be physically suited if it
is hard wired to the network, is not running on a battery, has a
lower latency connection than other connections, such as a Wi-Fi
network care, for example.
[0013] Accordingly, in one aspect, an embodiment of the present
invention is directed to one or more computer storage media storing
computer-useable instructions that, when used by one or more
computing devices, cause the one or more computing devices to
perform a method of communicating with two or more client devices
by way of a proxy device. The method includes determining an
identification of a proxy device that will communicate with a
shared service on behalf of two or more client devices. The two or
more client devices comprise the proxy device, and the
determination of the identification of the proxy device indicates
to the shared service that future communications from a first
client device of the two or more client devices will be received
from the proxy device. Further, the method includes communicating
data from the shared service to the first client device by way of
the proxy device through a wide area network.
[0014] In another embodiment, an aspect of the invention is
directed to one or more computer storage media storing
computer-useable instructions that, when used by one or more
computing devices, cause the one or more computing devices to
perform a method of communicating with two or more client devices
by way of a proxy device. The method includes determining that the
two or more client devices are interested in communicating with a
shared service that is accessible via a wide area network by the
two or more client devices. The two or more client devices are
locally connected such that they can communicate with each other.
The method also includes providing to each of the two or more
client devices identifications of other client devices that have
also provided an indication to a server of being interested in
communicating with the shared service and that can be used as a
proxy device. Each of the other client devices is in a same session
of the shared service as the two or more client devices. Further,
the method includes receiving an identification of the proxy device
from each of the two or more client devices, wherein the proxy
device is selected from the other client devices and communicating
with the two or more client devices by way of the proxy device.
[0015] A further embodiment of the present invention is directed to
one or more computer storage media storing computer-useable
instructions that, when used by one or more computing devices,
cause the one or more computing devices to perform a method of
communicating with a shared service by way of a proxy device. The
method includes, at a first client device, providing a server
associated with the shared service an indication that the first
client device is interested in communicating with the shared
service and receiving from the server a list of other client
devices that are also interested in communicating with the shared
service. The method also includes determining which of the other
client devices are locally connected to the first client device.
Further, the method includes selecting from the other client
devices that are locally connected to a proxy device that is used
by the first client device to communicate with the shared service
and communicating data to the shared service by way of the proxy
device.
[0016] Having briefly described an overview of embodiments of the
present invention, an exemplary operating environment in which
embodiments of the present invention may be implemented is
described below in order to provide a general context for various
aspects of the present invention. Referring initially to FIG. 1 in
particular, an exemplary operating environment for implementing
embodiments of the present invention is shown and designated
generally as computing device 100. Computing device 100 is but one
example of a suitable computing environment and is not intended to
suggest any limitation as to the scope of use or functionality of
the invention. Neither should the computing device 100 be
interpreted as having any dependency or requirement relating to any
one or combination of components illustrated.
[0017] The invention may be described in the general context of
computer code or machine-useable instructions, including
computer-executable instructions such as program modules, being
executed by a computer or other machine, such as a personal data
assistant or other handheld device. Generally, program modules
including routines, programs, objects, components, data structures,
etc., refer to code that perform particular tasks or implement
particular abstract data types. The invention may be practiced in a
variety of system configurations, including handheld devices,
consumer electronics, general-purpose computers, more specialty
computing devices, etc. The invention may also be practiced in
distributed computing environments where tasks are performed by
remote-processing devices that are linked through a communications
network.
[0018] With reference to FIG. 1, computing device 100 includes a
bus 110 that directly or indirectly couples the following devices:
memory 112, one or more processors 114, one or more presentation
components 116, input/output (I/O) ports 118, input/output
components 120, and an illustrative power supply 122. Bus 110
represents what may be one or more busses (such as an address bus,
data bus, or combination thereof). Although the various blocks of
FIG. 1 are shown with lines for the sake of clarity, in reality,
delineating various components is not so clear, and metaphorically,
the lines would more accurately be grey and fuzzy. For example, one
may consider a presentation component such as a display device to
be an I/O component. Also, processors have memory. The inventors
recognize that such is the nature of the art, and reiterate that
the diagram of FIG. 1 is merely illustrative of an exemplary
computing device that can be used in connection with one or more
embodiments of the present invention. Distinction is not made
between such categories as "workstation," "server," "laptop,"
"handheld device," etc., as all are contemplated within the scope
of FIG. 1 and reference to "computing device."
[0019] Computing device 100 typically includes a variety of
computer-readable media. Computer-readable media can be any
available media that can be accessed by computing device 100 and
includes both volatile and nonvolatile media, removable and
non-removable media. By way of example, and not limitation,
computer-readable media may comprise computer storage media and
communication media. Computer storage media includes both volatile
and nonvolatile, removable and non-removable media implemented in
any method or technology for storage of information such as
computer-readable instructions, data structures, program modules or
other data. Computer storage media includes, but is not limited to,
RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM,
digital versatile disks (DVD) or other optical disk storage,
magnetic cassettes, magnetic tape, magnetic disk storage or other
magnetic storage devices, or any other medium which can be used to
store the desired information and which can be accessed by
computing device 100. Communication media typically embodies
computer-readable instructions, data structures, program modules or
other data in a modulated data signal such as a carrier wave or
other transport mechanism and includes any information delivery
media. The term "modulated data signal" means a signal that has one
or more of its characteristics set or changed in such a manner as
to encode information in the signal. By way of example, and not
limitation, communication media includes wired media such as a
wired network or direct-wired connection, and wireless media such
as acoustic, RF, infrared, and other wireless media. Combinations
of any of the above should also be included within the scope of
computer-readable media.
[0020] Memory 112 includes computer-storage media in the form of
volatile and/or nonvolatile memory. The memory may be removable,
non-removable, or a combination thereof. Exemplary hardware devices
include solid-state memory, hard drives, optical-disc drives, etc.
Computing device 100 includes one or more processors that read data
from various entities such as memory 112 or I/O components 120.
Presentation component(s) 116 present data indications to a user or
other device. Exemplary presentation components include a display
device, speaker, printing component, vibrating component, etc.
[0021] I/O ports 118 allow computing device 100 to be logically
coupled to other devices including I/O components 120, some of
which may be built in. Illustrative components include a
microphone, joystick, game pad, satellite dish, scanner, printer,
wireless device, etc.
[0022] Referring now to FIG. 2, a block diagram is provided
illustrating an exemplary computing system environment 200 suitable
for use in implementing embodiments of the present invention. It
will be understood and appreciated by those of ordinary skill in
the art that the computing system environment 200 shown in FIG. 2
is merely an example of one suitable computing system environment
and is not intended to suggest any limitation as to the scope of
use or functionality of embodiments of the present invention.
Neither should the computing system environment 200 be interpreted
as having any dependency or requirement related to any single
module/component or combination of modules/components illustrated
therein. Among other components not shown, the system 200 includes
client devices 202 and 204 and a proxy device 206 that communicate
with each other by way of a local area network 208. The system 200
also includes services 214 and 216 that communicate with the client
devices 202 and 204 and the proxy device 206 by way of the wide
area network 212 which, in one embodiment, is the Internet. In one
embodiment, the local area network 208 and the wide area network
212 communicate with each other by way of a router 210. The local
area network 208 may include, without limitation, one or more local
area networks (LANs). The wide area network 212 may include,
without limitation, one or more wide area networks (WANs), such as
the Internet. Such networking environments are commonplace in
offices, enterprise-wide computer networks, intranets, and the
Internet. Accordingly, the local area network 208 and the wide area
network 212 are not further described herein.
[0023] In some embodiments, one or more of the illustrated
components/modules may be implemented as stand-alone applications.
In other embodiments, one or more of the illustrated
components/modules may be integrated directly into other
components. It will be understood by those of ordinary skill in the
art that the components/modules illustrated in FIG. 2 are exemplary
in nature and in number and should not be construed as limiting.
Any number of components/modules may be employed to achieve the
desired functionality within the scope of embodiments hereof.
Further, components/modules may be located on any number of
servers, client devices, or the like.
[0024] With continued reference to FIG. 2, each of client devices
202 and 204, proxy device 206, and services 214 and 216 may be any
type of computing device, such as computing device 100 described
with reference to FIG. 1, for example. As mentioned, client devices
202 and 204 and proxy device 206 may communicate with each other
via the local area network 208, and these client devices may
communicate with the services 214 and 216 by way of the wide area
network 212. The services 214 and 216, in one embodiment, are run
on a server, which may be operated by a developer of the service. A
service, as used herein, is any type of program that is accessible
to clients or users via the Internet, and may include, for
exemplary purposes only, applications (e.g., weather applications,
gaming applications), location-based services, data objects, etc.
It should be understood that any number of client devices and
services may be employed within the system 200 within the scope of
the present invention. Each may comprise a single device or
multiple devices cooperating in a distributed environment. For
instance, each service 214 and 216 may comprise multiple components
that assist to perform the functions of a service. Additionally,
other components not shown may also be included within the system
200, while components shown in FIG. 2 may be omitted in some
embodiments.
[0025] The client devices 202 and 204 and the proxy device 206 may
be any type of computing device owned and/or operated by a client
that can access the local area network 208. For instance, each of
the client devices 202 and 204 and the proxy device 206 may be a
desktop computer, a laptop computer, a tablet computer, a mobile
device, a gaming system, or any other device having network access.
Generally, a client may employ the client devices 202 and 204 and
the proxy device 206 to, among other things, send and receive data
from the network when using a particular service, such as services
214 and 216. For instance, client device 202 may be a gaming system
that is able to connect to the Internet to access a certain game
online, such as service 214 or 216. The client device 202 may
alternatively be a computing system that is attempting to access a
game, weather application, social media website, etc., and may
access such service by way of the wide area network 212.
[0026] As will be discussed further herein, the client devices 202
and 204 and the proxy device 206 communicate with each other via
the local area network 208, and as such these client devices may be
physically located in close proximity, even in the same room or
building. While typically each of these client devices 202, 204,
and 206 would communicate through the wide area network 212
individually to access particular services, embodiments of the
present invention allow for the communication to be routed through
just one of the devices, such as the proxy device 206, when these
devices are attempting to access the same service. Here, the proxy
device 206 is chosen or volunteers to act as the proxy communicator
for one or more of the other devices connected to the local area
network 208. For instance, if client device 202 is attempting to
access service 214 through the network and proxy device 206 is also
attempting to access service 214, client device 202 may send its
communications to the proxy device 206 first, which will then
communicate through the wide area network 212 to the service 214 on
behalf of the client device 202. Utilizing a proxy provides many
benefits on both the client side and the server (service) side. For
instance, in the context of a chat application or an instant
message program, each client device may continuously send a request
to the application's server requesting data from the other client
device with which the client device is communicating. As such, as
soon as the client device receives a message, another request is
immediately sent to the server until another message is received.
Utilizing a proxy device uses less bandwidth, which saves the
server many resources that it would be using elsewhere.
Additionally, if each device is individually communicating to the
server with its own connection, many resources on the server's side
are needed to support these multiple individual connections, which
can be avoided if they are pooled together in a single
connection.
[0027] To better illustrate embodiments of the present invention,
an exemplary scenario may involve multiple network connected
devices that are each interested in communicating with the same
remote service. For example, a Smartphone, a laptop computing
device, and a gaming system may all be communicating to a chat
service. While the service is located at a remote location, each of
these devices is located on the same local-subnet. They can all
communicate with each other over the local intranet, such as the
local area network 208. The local devices may be able to detect
that they are on the same local subnet. They would then elect a
single device to act as the conduit or proxy to the service in the
cloud. The service is then notified as to the identity of the proxy
device so that messages are correctly routed in both directions. At
this point, all traffic to the service would flow to the service
through the proxy device, such as the proxy device 206. As such,
all incoming and outgoing messages or other communications to/from
the client devices and the service would be routed through the
proxy device 206. The messages would all be multiplexed into a
single communication channel up to the server and back down from
the server. This single communication channel may even provide
faster and more reliable connectivity options than the clients are
able to achieve individually. For example, browser code is limited
to HTTP communication, but the proxy running on a desktop computing
device or a gaming system, for example, may make a persistent TCP
connection to the server, which the browser could use by
communicating with the proxy device using HTTP.
[0028] Turning to FIG. 3, a block diagram is illustrated of
multiple client devices in communication with a shared service by
way of a proxy device. This block diagram is generally referred to
as system 300. As mentioned, multiple client devices may be able to
communicate with one another if they share a single Internet
connection, or if they are connected via a local area network.
Tablet computing device 302, laptop 304, Smartphone 306, and gaming
system 308 illustrated in FIG. 3 communicate with the same local
area network (not shown), and as such are able to communicate with
each other. Here, the gaming system 308 has been selected as the
device to act as a communication proxy for the other devices. There
are many ways that a proxy device is selected. All are considered
to be within the scope of the present invention. For exemplary
purposes only and not limitation, in one embodiment, the proxy
device is selected by the clients themselves. But in another
embodiment, the proxy device is selected by the server, such as the
server associated with the particular service that the device is
attempting to access. In yet another embodiment, both a server on
the service side and the client devices wanting to access that
service make the decision as to which device will act as the
communication proxy.
[0029] In one instance, the proxy device may be selected based on
it being able to better communicate with the service's server than
the other client devices. For instance, a TCP connection may
provide for better and faster communication with the server than an
HTTP communication. Generally, TCP communication is a more
efficient communication protocol than HTTP. A connection speed of
each client device may also be used to make this determination.
Further, the determination may be made based on whether each device
is currently using a wired or wireless connection to the network.
Additionally, one device may be currently in communication with
several services or may have several applications open, but another
may not have any other than the service with which it is currently
trying to communicate. As such, a device with a smaller load may be
better suited to efficiently act as the proxy device rather than a
device that is perhaps slower at the current time because it is
utilizing several applications or services simultaneously.
[0030] In one embodiment, the server associated with the service is
aware of the client devices with which it is currently
communicating, or which devices are currently registered to
communicate with that particular service. At this point, the client
devices are each individually communicating with the service. The
service or its associated server may alert each of these client
devices of each other and that each of these devices is currently
using the same resource, or the same service. The UPNP, an open
protocol for universal communication, TCP connection, etc., are
ways for the devices to communicate with each other and determine
which device will be the connection pooler, or the proxy connection
device. The selection of the proxy device may be random or may be
ordered. In one embodiment, the server associated with the service
is aware of which devices have previously acted as a proxy device,
and tells the other devices this information. This may assist the
client devices in making the selection of a proxy device.
[0031] Returning to FIG. 3, in the scenario described above, the
Smartphone 306 would receive a list from the service's server as to
which locally connected client devices have previously acted as the
proxy. Here, the Smartphone 306 may have the capability to look
through the list of devices provided by the service's server to
determine which it has the capability of communicating with (e.g.,
which share the same Internet connection or which communicate with
the same local area network). The Smartphone 306 would notice the
gaming system 308 on the list and may attempt to communicate with
the gaming system 308 to confirm or request that the gaming system
308 act as the proxy for their communication with the shared
service 310. A message would then be communicated to the service's
server indicating that the Smartphone's 306 data will be
communicated to the shared service 310 via the gaming system 308.
This message may be communicated by either the Smartphone 306 or
the gaming system 308. For example, in one embodiment, the proxy
device provides an indication to the shared service 310 that it
will be the proxy. But in another embodiment, another device not
acting as proxy provides the indication to the shared service. Once
the shared service 310 is aware that the Smartphone's 306
communication will go through the gaming system 308, data may be
communicated bidirectionally both to and from the shared service
310 to the Smartphone 306. As such, data is both pushed to the
shared service 310 and pulled from the shared service 310.
[0032] In one embodiment, a service may break up current registered
users by session. Devices in each session may be local in relation
to each other, for example. As such, the server, when it
communicates the identity of other devices currently registered
with a particular service, may just communicate the identity of the
devices that are in the same session, as those may be the devices
that are locally connected to that particular device. This may
assist the laptop 304 for instance, in determining the devices that
are locally connected and that may act as the proxy device.
[0033] FIG. 4 illustrates a flow diagram showing a method for
communicating with two or more client devices by way of a proxy
device, in accordance with an embodiment of the present invention.
Initially, it should be mentioned that FIG. 4 is from the shared
service's point of view. More specifically, a server associated
with a particular shared service is likely the computing device
performing the steps shown in FIG. 4. At step 410, a determination
is made as to the identification of a proxy device that will
communicate data between the shared service and two or more client
devices. In one instance, the proxy device is one of the client
devices such that the proxy device and the client device are both
communicating with the same shared service through the proxy
device. This allows just one communication stream to be sent to and
from the shared service for both of the devices. As previously
discussed the determination or selection of the proxy device may be
made by the client devices themselves or by the server associated
with the shared service. Alternatively, the determination may be
made by a combination of the client device and the server. For
example, if there are three locally connected client devices each
attempting to access the same shared service, the third of the
three client devices may be selected by the other client devices as
the proxy device.
[0034] In one embodiment, when made by the proxy devices in
combination with the server, an indication is received that the
client devices are attempting to communicate with a shared service,
typically by way of a wide area network, such as the Internet. A
shared service, as previously mentioned, is any type of program
that is accessible to multiple clients or users via the Internet,
and may include, for exemplary purposes only, applications (e.g.,
weather applications, gaming applications), location-based
services, shared data objects, etc. Once the server is aware that
the client devices are attempting to communicate with it, or are
interested in communicating with it, the server may determine that
the client devices are locally connected such that they are capable
of communicating with one another by way of a local area network.
In this embodiment, the server provides a first client device with
a list of other client devices currently communicating with the
shared service. In one instance, these other client devices may be
currently registered with that shared service, indicating that they
are also attempting to communicate with the shared service. In one
embodiment, the other client devices may even be in the same
session as the first client device.
[0035] In embodiments, the list of other client devices provided to
the client devices may include only those client devices that are
registered as proxy devices, such as if these devices have
previously acted as the proxy device for one or more other client
devices. The server may monitor those devices that act as proxy
devices so that they can be suggested in the future when a proxy
device is requested. The other client devices provided to the first
client device may be only those that are locally connected to the
first client device. Alternatively, the other client devices may
not all be locally connected, leaving it up to the first client
device to attempt to contact the other client devices to determine
if they are locally connected or not. When the determination of a
proxy device is made by the client devices alone, a LAN discovery
protocol may be used without the assistance of the server. Or,
based on information the server knows about the client devices, it
may make the determination or selection of the proxy device without
the assistance of the client devices.
[0036] As such, in one embodiment, an identification of the proxy
device is received by the server. In one embodiment, this
identification is received from the first client device.
Alternatively, the identification may be received from the selected
proxy device itself. Even further, the identification may be
received at the server from both the first client device and the
proxy device. The received indication of the proxy device indicates
to the server that future communications from the first client
device will be received from the proxy device. In one instance, the
selected proxy device is one of the client devices that had
attempted to communicate with the shared service. As mentioned,
there are many ways that a proxy device may be selected. For
instance, a proxy device may be selected based on a connection type
(e.g., TCP or HTTP), a speed of each of the two or more client
devices (e.g., Smartphones may have a slower connection speed than
a gaming system), other communications or applications currently in
progress on each of the client devices, whether the client devices
are wired or wireles sly connected to the wide area network (e.g.,
hardwire or Wi-Fi), or by random selection. These factors are
exemplary in nature, and thus are not meant to limit embodiments of
the present invention. Further, the proxy device may be selected by
the client devices using a LAN discovery protocol such that the
server or shared service is not involved in any way with the
selection of the proxy device. While the proxy device selection is
described above as being done by the client devices, in one
embodiment, proxy device selection is done by the server. Here, the
server would simply select the proxy device based on information it
knows about the registered devices and notify the other
locally-connected devices about this proxy relationship.
[0037] At step 412, data is communicated from the shared service to
the first client device by way of the proxy device. The
communication of data is bidirectional such that data is sent to
and from the shared service to the first client device by way of
the proxy device. Because the proxy device and the first client
device are both in communication with the shared service, a single
connection is shared between the two devices through the wide area
network to the shared service. Here, the shared service or its
associated server receives only a single communication stream from
the proxy device when the proxy device is communicating with the
shared service on behalf of itself and the first client device.
While a first client device is described here, it is contemplated
to be within the scope of the present invention that multiple other
devices may utilize the same proxy device for communication with a
shared service. This scenario is shown in FIG. 3 herein.
[0038] Turning now to FIG. 5, a flow diagram showing a method for
communicating with a shared service by way of a proxy device is
illustrated, in accordance with an embodiment of the present
invention. Initially at step 510, a first client device provides a
server with an indication that it is interested in communicating
with the shared service. This indication may be an actual
communication of data in one embodiment, or a registration request
with the shared service in another embodiment. At step 512, a list
of other client devices also interested in communicating with the
shared service is received by the first client device (e.g., those
client devices that are currently registered with the shared
service). It is determined at step 514 which of the other client
devices is locally connected to the first client device. As
mentioned, the server, in one embodiment, sends the first client
device a list of only those client devices that are locally
connected to the first client device. Alternatively, the server may
not have the information to know which are locally connected, and
thus the other client devices may not all be locally connected.
[0039] At step 516, a proxy device is selected from the list of
other client devices. The selected proxy device is a client device
that is determined to be locally connected to the first client
device such that the devices are able to communicate by way of a
local area network. This selected proxy device uses a single
communication stream to communicate its data and data from the
first client device to the shared service via a wide area network,
such as the Internet. The proxy device is also used to receive data
intended for the first client device. At step 518, data is
communicated to the shared service by way of the proxy device.
[0040] As can be understood, embodiments of the present invention
provide for utilization of a proxy device to communicate with a
service for one or more client devices. The present invention has
been described in relation to particular embodiments, which are
intended in all respects to be illustrative rather than
restrictive. Alternative embodiments will become apparent to those
of ordinary skill in the art to which the present invention
pertains without departing from its scope.
[0041] From the foregoing, it will be seen that this invention is
one well adapted to attain all the ends and objects set forth
above, together with other advantages which are obvious and
inherent to the system and method. It will be understood that
certain features and subcombinations are of utility and may be
employed without reference to other features and subcombinations.
This is contemplated by and is within the scope of the claims.
* * * * *