BACKGROUND 1. Field of the Invention
The present invention relates to network information services and, more particularly, to techniques for providing network services to mobile devices.
2. Related Art
Mobile electronic devices, such as cellular telephones, personal digital assistants (PDAs), and laptop computers, continue to proliferate as they increase in functionality and decrease in size and price. Furthermore, all kinds of mobile electronic devices are increasingly being equipped with wireless Internet access as a standard feature. As a result, mobile devices currently provide a range of features previously only available from full-featured PCs, but with the obvious advantage of increased mobility.
Mobile devices typically communicate with a centralized server, such as a web server, instant messaging (IM) server, or SMS (Short Message Service) server, which performs requested services on behalf of the mobile device. Referring toFIG. 1A, for example, a diagram is shown of a priorart communications system100 in which amobile device102 communicates with aserver104 over anetwork106, such as a cellular telephone network. The connection108a-bbetween themobile device102 andserver104 is abstracted to represent both the physical connection and the logical connection between thedevice102 andserver104. If, for example, theserver104 is an email server, themobile device102 may send and receive email through theserver104. For example, the mobile device may send a request over the connection108a-bto receive any new email messages, in response to which theserver104 may retrieve and transmit any new email messages over the connection108a-bto themobile device102. Theserver104 typically is maintained by a service provider and may provide service to a large number of mobile devices simultaneously. Depending on the type of service provided by theserver104, the user of themobile device102 may pay a fee to the provider of theserver104, which may be a different provider than the provider of thenetwork106 and/or connection108a-b, to which the mobile device user may pay separate fees.
Instant messaging (IM) is an increasingly popular service being provided on a variety of networks. When a user transmits an instant message over an IM network to another user on the network, the message is displayed immediately on the recipient's screen. Users may therefore use instant messaging to conduct online conversations in real-time, much like telephone conversations. Many users prefer instant messaging to email because of its immediacy. Multiple users may simultaneously engage in an IM conversation, sometimes referred to as a “group chat.”
Referring toFIG. 1B, a diagram is shown of a prior artinstant message system120, which includes acentralized IM server124 coupled to a plurality of IM clients122a-dover persistent connections126a-d, respectively. For ease of illustration and explanation,FIG. 1B does not show the network itself or the devices (such as desktop computers) that may be used to perform instant messaging in thesystem120.IM client122amay, for example, transmit an instant message toIM client122bby transmitting the message using an appropriate protocol (referred to herein as an “instant messaging protocol”) overconnection126atoIM server124.IM server124 may relay the message overconnection126btoIM client122b. In other words,IM server124 acts as an intermediary for all of the IM clients122a-d.
Although instant message was originally implemented for use on desktop and laptop personal computers (PCs), more recently mobile devices have been equipped with the ability to engage in instant messaging. For example, referring toFIG. 1C, a diagram is shown of asystem140 implementing a portion of theinstant messaging system120 shown inFIG. 1B. In current systems, amobile device142 is provided with IM functionality by installing asoftware IM client122aon themobile device142. TheIM client122aon themobile device142 communicates with theIM server124 over anetwork144 through IM connection146a-b.
The mobiledevice IM client122acommunicates with theIM server124 using the same IM protocol that is used by a PC-based IM client. Due to various resource limitations of themobile device142, however, such as its limited screen, bandwidth, storage capacity, power supply, and processing power, theIM client122atypically provides a set of features that is significantly scaled down in comparison to the set of features provided by a PC-based IM client. For example, the mobile device'sIM client122amay be unable to display more than a few lines of an IM conversation at a time, may be unable to store (“log”) the contents of an IM conversation, and may be unable to receive and/or display images transmitted as attachments to IMs.
Therefore, although the users of mobile devices are increasingly looking to such devices to provide the same functionality as conventional full-featured PCs, providing such functionality in mobile devices remains a challenge, both because of the resource limitations just described and because of the relatively high cost of mobile (typically wireless) bandwidth compared to the relatively low cost of (typically wired) PC bandwidth. Some servers providers have attempted to address this problem by providing public servers for providing additional functions on behalf of mobile devices, such as filtering and logging instant messages. Such servers may, therefore, reduce the burden on the mobile clients to perform such functions. The establishment of such servers, however, imposes an additional cost on the server provider, which is then passed on to the customer. Furthermore, the mobile device users may be provided with only a limited ability to configure or otherwise control the services provided by the public servers, thereby limiting their usefulness to the end users.
What is needed, therefore, are improved techniques for providing network information services to mobile devices.
SUMMARY A personal server is provided for use with a mobile device, such as a cellular telephone. The personal server provides services to the user of the mobile device and to others authorized by the user, but to no other users. The personal server may be a home PC of the user of the mobile device. The personal server may serve as a proxy server for a shared server that provides services to the mobile device. The personal server may relay messages between the mobile device and the shared server. The personal server may store, log, filter, and perform other processing on the user's personal data, such as messages transmitted by the mobile device and/or the shared server. The personal server may aggregate messages received from a plurality of shared servers. A non-personal server may perform additional services, such as configuring the personal server and temporarily storing data if the personal server becomes inaccessible.
For example, in one embodiment of the present invention, a system is provided which includes a mobile device configured for use by a user, and a personal server coupled to the mobile device over a first wide area network connection to provide services over the wide area network to the user and to others authorized by the user, but to no other users. In another embodiment of the present invention, a computer-implemented method is provided in which a personal server, coupled to a mobile device over a first wide area network connection, provides services over the wide area network to a user of the mobile device and to others authorized by the user, but to no other users.
In yet another embodiment of the present invention, a system is provided which includes mobile device configured for use by a user, and a personal server coupled to the mobile device over a first wide area network connection to transmit personal data between the mobile device and the user and others authorized by the user, but no other users. In a further embodiment of the present invention, a computer-implemented method is provided in which a personal server, coupled to a mobile device over a first wide area network connection, transmits personal data between the mobile device and the user of the mobile device (and others authorized by the user), but to no other users.
Other features and advantages of various aspects and embodiments of the present invention will become apparent from the following description and from the claims.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1A is a diagram of a prior art communications system in which a mobile device communicates with a server over a network;
FIG. 1B is a diagram of a prior art instant messaging system including a centralized instant messaging server coupled to a plurality of instant messaging clients;
FIG. 1C is a diagram of a system implementing a portion of the prior art instant messaging system ofFIG. 1B;
FIG. 2A is a block diagram of a system implemented according to one embodiment of the present invention;
FIG. 2B is a diagram of a system implemented according to another embodiment of the present invention;
FIG. 2C is a diagram of a system including a plurality of mobile devices and a plurality of corresponding personal servers according to one embodiment of the present invention;
FIG. 3A is a flowchart of a method that is performed by a personal server to relay messages from a shared server to a mobile device according to one embodiment of the present invention;
FIG. 3B is a flowchart of a method that is performed by a personal server to relay messages from a mobile device to a shared server according to one embodiment of the present invention;
FIGS. 3C-3D are flowcharts of methods performed by a personal server to translate messages between a first and second protocol according to one embodiment of the present invention;
FIG. 3E is a flowchart of a method that is performed by a personal server to filter messages received from a shared server according to one embodiment of the present invention;
FIG. 3F is a flowchart of a method that is performed by a personal server to process instant messages on behalf of a mobile device according to one embodiment of the present invention;
FIG. 3G-3H are flowcharts of methods performed by a personal server to aggregate and disaggregate messages, respectively, according to one embodiment of the present invention;
FIGS. 3I-3J are flowcharts of methods performed by a non-personal server to relay messages between a shared server and a personal server according to one embodiment of the present invention;
FIG. 3K is a flowchart of a method performed by a personal server to broadcast a message on behalf of a mobile device according to one embodiment of the present invention;
FIG. 3L is a method performed by a personal server to store data on behalf of a mobile device based on predetermined criteria according to one embodiment of the present invention;
FIG. 3M is a method performed by a personal server to transmit personal data to a mobile device according to one embodiment of the present invention;
FIG. 3N is a flowchart of a method performed by a personal server to selectively store personal data on behalf of a mobile device according to one embodiment of the present invention;
FIG. 3O is a flowchart of a method performed by a non-personal server to use a personal server to selectively store personal data on behalf of a mobile device according to one embodiment of the present invention;
FIG. 3P is a flowchart of a method performed by a personal server to execute a program on behalf of a mobile device according to one embodiment of the present invention; and
FIG. 3Q is a flowchart of a method performed by a non-personal server to temporarily store personal data on behalf of a mobile device according to one embodiment of the present invention.
DETAILED DESCRIPTION A personal server is provided for use with a mobile device, such as a cellular telephone. The personal server provides services to the user of the mobile device and to others authorized by the user, but to no other users. The personal server may be a home PC of the user of the mobile device. The personal server may serve as a proxy server for a shared server that provides services to the mobile device. The personal server may relay messages between the mobile device and the shared server. The personal server may store, log, filter, and perform other processing on the user's personal data, such as messages transmitted by the mobile device and/or the shared server. The personal server may aggregate messages received from a plurality of shared servers. A non-personal server may perform additional services, such as configuring the personal server and temporarily storing data if the personal server becomes inaccessible.
Referring toFIG. 2A, a block diagram is shown of asystem200aimplemented according to one embodiment of the present invention. Thesystem200aincludes a mobile device202 (such as a cellular telephone) coupled over a first wide area network220 (such as a cellular telephone network) to a personal server212 (such as a desktop or laptop PC). Themobile device202 has auser222 who is authorized to use themobile device202. Theuser222 may, for example, be an owner of themobile device202 or someone authorized by the owner to use themobile device202, such as a friend or family member of the owner of themobile device202. In one embodiment of the present invention, theuser222 may be an owner of themobile device202 or someone authorized by the owner of themobile device202 to perform read-only actions (such as viewing email and browsing web pages) using themobile device202. Thepersonal server212 provides services to theuser222 and to others authorized by theuser222 to use thepersonal server212, but to no other users. Thepersonal server212 may, for example, be a personal computer owned by theuser222. As described in more detail below, thepersonal server212 may storepersonal data214 associated with theuser222.
User222 operates themobile device202 by providingcommands224 to thedevice202 using a user interface provided by thedevice202. Such a user interface may, for example, include hardware input components such as a keyboard, mouse, keypad, stylus, and/or touchscreen, as well as software for providing a graphical user interface to theuser222 and for processing thecommands224.Mobile device202 providesoutput226 to theuser222, such as by displaying text and/or graphics on a display screen. Various techniques for receiving input from and providing output to the user of a mobile device are well-known to those having ordinary skill in the art.
Themobile device202 may communicate with thepersonal server212 over thewide area network220, such as by sendingoutgoing message210 to thepersonal server212 and by receivingincoming message218 from thepersonal server212. In the embodiment illustrated inFIG. 2A,outgoing message210 is transmitted overWAN connection208aandincoming message218 is transmitted overWAN connection208c. Bothoutgoing message210 andincoming message218 may, however, be transmitted over the same WAN connection betweenmobile device202 andpersonal server212. For example, themobile device202 may be an Internet-enabled cellular telephone, and thepersonal server212 may be a PC having a permanent connection to the Internet. In such a case, themobile device202 may establish an Internet connection with thepersonal server212 in any of a variety of ways well-known to those having ordinary skill in the art.
Incoming message218 andoutgoing message210 may be any of a variety of kinds of messages, such as instant messages, email messages, or text messages (e.g., SMS messages). More generally, the term “message” refers herein to any kind of information transmitted over a network, whether such information represents a human-readable message or non-human readable data or commands. Thepersonal server212 may thereby provide a variety of services to themobile device202 over thewide area network220.
Thepersonal server212 may serve as a proxy server for another, shared,server204. The sharedserver204 is “shared” in the sense that, unlike thepersonal server212, it provides services to a plurality of independent users. One example of a plurality of “independent” users is a plurality of users having distinct instant messaging accounts on a public instant messaging server. The sharedserver204 may, for example, be a conventional file server, email server, instant messaging server, or SMS server. In the embodiment illustrated inFIG. 2A, thepersonal server212 is coupled to the sharedserver204 over a secondwide area network206. Note, however, that the firstwide area network220 and the secondwide area network206 may be a single network rather than two distinct networks.
Thepersonal server212 may serve as a “proxy” server in the sense that thepersonal server212 may serve as a proxy for themobile device202 in communications with the shared server. Recall, for example, that in the prior artinstant messaging system120 shown inFIG. 1B, each of the IM clients122a-dcommunicates directly theIM server124. In contrast, in thesystem200aillustrated inFIG. 2A, themobile device202 communicates with the sharedserver204 indirectly through thepersonal server212. Thepersonal server212 may include a pseudo-client240, which may be configured to communicate with the sharedserver204 using an appropriate protocol. For example, if the sharedserver204 is an instant messaging server, the pseudo-client240 may be a conventional instant messaging client or other software that is capable of communicating with the sharedserver204 using an appropriate instant messaging protocol.
Thepersonal server212 may provide a variety of services to themobile device202. For example, thepersonal server212 may relay messages between themobile device202 and the sharedserver204. For example, referring toFIG. 3A, a flowchart is shown of amethod300 that is performed by thepersonal server212 in one embodiment of the present invention. Thepersonal server212 may, for example, receiveincoming message218 from the sharedserver204 onconnection208d(step302). Thepersonal server304 may transmit theincoming message218 to themobile device202 onconnection208c(step304). Similarly, referring toFIG. 3B (method305), thepersonal server212 may receive outgoing message210 (step306) to the sharedserver204 as anoutgoing message216 on aconnection208bbetweenpersonal server212 and shared server204 (step308).
One function that may be performed by thepersonal server212 is to translate incoming and outgoing messages from one protocol to another. For example, referring toFIG. 3C, a flowchart is shown of amethod309 that is performed by thepersonal server212 in one embodiment of the present invention. Consider, for example, a case in which the sharedserver204 is an instant messaging server and in which themobile device202 is not equipped with instant messaging capabilities. Assuming that themobile device202 is equipped, however, with email/SMS/IM capabilities, thepersonal server212 may use the pseudo-client240 to receive instant messages transmitted by the sharedserver204 according to an instant messaging protocol (step310) and convert such messages into email messages (step312) before transmitting them to the mobile device202 (step314). Conversely, referring toFIG. 3D (method315), thepersonal server212 may receive email messages transmitted by the mobile device202 (step316) and convert them to instant messages (step318) before transmitting them to the shared server204 (step320). More generally, thepersonal server212 may convert messages from one protocol to another when relaying messages between themobile device202 and the sharedserver204, thereby allowing communication therebetween which would not otherwise be possible. In some existing systems, such translation is performed by shared servers maintained by service providers. Performing such translation using thepersonal server212 may be advantageous for a variety of reasons. For example, thepersonal server212, which may otherwise be idle, may devote its processing resources exclusively to servicing themobile device202, thereby providing services more efficiently than a shared server.
Thepersonal server212 may also perform filtering on messages received from the sharedserver204. For example, referring toFIG. 3E, a flowchart is shown of amethod321 that is performed in one embodiment of the present invention by thepersonal server212 to filter messages received from the sharedserver204. Thepersonal server212 receives messages from the shared server204 (step322), filters the messages to produce filtered messages (step324), and transmits the filtered messages to the mobile device202 (step326). As a result, thepersonal server212 may forward less than all of the data received from the sharedserver204 to themobile device202. Such filtering may be advantageous for a variety of reasons. For example, such filtering may decrease the cost of operating themobile device202 because the cost of the connection between thepersonal server212 and themobile device202 may be higher than the cost of the connection between thepersonal server212 and the sharedserver204.
One example of information that may be filtered by thepersonal server212 is instant messaging “presence information.” In conventional instant messaging systems, such as thesystem120 shown inFIG. 1B, theinstant messaging server124 maintains persistent connections126a-dwith the IM clients122a-d. Thecentral IM server124 periodically sends presence information to each client, indicating whether other selected instant messaging users (sometimes referred to as “buddies”) are connected to the network. Such presence information is transmitted to the client automatically, whether or not it is requested. Although the transmission of presence information may not be problematic on wired connections which are priced at a flat rate or by the hour, the repeated transmission of presence information may incur a significant cost to theuser222 when such information is transmitted over connections (such as cellular telephone connections) which are priced by usage. As a result, filtering presence information may provide a cost savings to theuser222 when the cost per bit of the connection between thepersonal server212 and the sharedserver204 is lower than the cost per bit of the connection between thepersonal server212 and themobile device202. Such filtering may be performed in any of a variety of ways, such as by lengthening the period between transmissions (e.g., from 10 seconds to 5 minutes) or by only transmitting presence information to themobile device202 when such information has changed.
Note that the filtering just described may be implemented whether or not themobile device202 is instant-messaging enabled. For example, themobile device202 may include apersonal client228, which may be a conventional mobile instant messaging client, in which case thepersonal server212 may act as a filter without converting from one protocol to another. Alternatively, thepersonal server212 may both act as a filter and convert between the instant messaging protocol (or other protocol used by the shared server204) and a protocol (such as an email protocol) recognized by themobile device202.
More generally, thepersonal server212 may serve as an “instant messaging proxy server” (IM proxy) that performs a variety of IM-related service for themobile device202. For example, thepersonal server212 may log IM sessions in thepersonal data214, filter obscene messages or other information, operate distribution lists, and maintain the required persistent connection with the IM server (e.g., the shared server204) even when themobile device202 loses network connectivity due to an incoming phone call, momentary interruption of service, or other network connectivity problem. More generally, referring toFIG. 3F (method327), thepersonal server212 may receive instant messages from the shared (IM)server204 in the same manner as any other conventional IM client (step328), perform any kind of processing on the instant messages (step330), and then transmit the processed instant messages to the mobile device (step332).
Another function that may performed by thepersonal server212 is to act as an aggregator of services provided by a plurality of shared servers. For example, referring toFIG. 2B, a diagram is shown of asystem200bin another embodiment of the present invention. Referring toFIG. 3G, a flowchart is shown of amethod333 that is performed by thepersonal server212 to aggregate messages in thesystem200baccording to one embodiment of the present invention. Individual messages are not shown inFIG. 2B for ease of illustration. Thesystem200bincludes the elements ofsystem200a(FIG. 2A), as well as two additional sharedservers282 and284. The sharedservers204,282, and284 may, for example, be instant messaging servers operating on different instant messaging networks and/or using different instant messaging protocols. Typically, for a device such as themobile device202 to communicate with all of the sharedservers204,282, and284, themobile device202 would be need to be equipped with a plurality of clients, each configured to communicate with a distinct one of the sharedservers204,282, and284. In contrast, in the embodiment illustrated inFIG. 2B, thepersonal server212 is equipped with a plurality ofpseudo clients204,282, and284, capable of communicating with sharedservers204,282, and284, respectively. As a result, thepersonal server212 may serve as a proxy for themobile device202 by receiving messages from the plurality of sharedservers204,282, and284 (step334), aggregating the messages (step336), and transmitting the aggregated messages to the mobile device202 (step338). For example, thepersonal server212 may aggregate instant messaging streams received from the sharedservers204,282, and284 into a single instant messaging stream provided to the singlepersonal client228. Similarly, referring toFIG. 3H (method339) thepersonal server212 may receive messages from the mobile device202 (step340), disaggregate the messages (step342), and then use thepseudo-clients240,286, and288 to forward the disaggregated messages to the appropriate ones of the sharedservers204,282, and284 (step344). Such aggregation and disaggregation may be combined with any of the other techniques disclosed herein, such as filtering and logging of communications.
In the embodiment illustrated inFIG. 2A, themobile device202 is provided withpersonal client228 for communicating with thepersonal server212 over thewide area network220 using an appropriate protocol. Thepersonal client228 may, for example, be a conventional email client IM client, or SMS client. Thepersonal client228 may, however, be aproprietary client228 for communicating with thepersonal server212 according to a proprietary protocol. For example, thepersonal server212 may communicate with the sharedserver204 using a standard protocol (such as SMS), yet communicate with themobile device202 using a proprietary (non-standard protocol), and convert between the two. As a result, themobile device202 may not need to be equipped with the kind of client (e.g., an instant messaging client) that would otherwise be required for communicating with the sharedserver204.
Note that themobile device202 and thepersonal server212 need not be coupled directly to each other. Rather, as shown inFIG. 2B, thesystem200bmay include a non-personal server230 through which themobile device202 and thepersonal server212 may communicate over theWAN220. The non-personal server230 may serve a plurality of users, unlike thepersonal server212. One function that may be performed by the non-personal server230 is to forwardoutgoing messages210 from themobile device202 to thepersonal server212 and to forwardincoming messages218 from thepersonal server212 to themobile device202.
The non-personal server230 may maintainaccount information236a-cfor each of the users served by the non-personal server230. For example, referring toFIG. 2C, the system may include a plurality ofmobile devices202,250, and270, and a plurality of correspondingpersonal servers212,254, and274.Account information236amay be associated with theuser222 ofmobile device202 andpersonal server212;account information236bmay be associated withmobile device250 andpersonal server254; andaccount information236cmay be associated with themobile device270 andpersonal server274. Additional components of thepersonal servers212,254, and274 (such as configuration information and pseudo-clients) are omitted fromFIG. 2C for ease of illustration. Theaccount information236a-cmay include any kind of information about the associated user and devices, such as usernames, passwords, device IDs, and configuration preferences.
Referring toFIG. 3I, a flowchart is shown of amethod349 that is performed by the non-personal server230 to relay messages from themobile device202 to thepersonal server212 according to one embodiment of the present invention. The non-personal server230 receives a message (such as outgoing message210) from themobile device202 over the WAN220 (step350). The non-personal server230 identifies the personal server that corresponds to the mobile device202 (step352). The non-personal server230 may, for example, use the header of theoutgoing message210 and theaccount information236a-cto identify thepersonal server212 as the personal server corresponding tomobile device202. The non-personal server230 transmits themessage210 to the identified personal server over the WAN220 (step354). Conversely, referring toFIG. 3J (method355), the non-personal server230 may receive a message (such as incoming message218) from the sharedserver204 over the WAN220 (step356), identify the personal server that corresponds to the mobile device for which the message is destined (step358), and transmit the message to the identified personal server (step360).
Another function that may be performed by thepersonal server212 is to broadcast messages on behalf of themobile device202. For example, referring toFIG. 3K, a flowchart is shown of amethod359 that is performed by thepersonal server212 in one embodiment of the present invention to broadcast messages on behalf of themobile device202. Themobile device202 may transmit the singleoutgoing message210 to thepersonal server212 but specify a plurality of destinations. Referring toFIG. 2B, thepersonal server212 may receive the outgoing message210 (step360), identify the plurality of destination clients232a-cspecified by the message (step362), and broadcast multiple instances of theoutgoing message216 over theWAN206 to a plurality of destination clients232a-c(step364). Such a technique may be advantageous for a variety of reasons. For example, the bandwidth of connections over thesecond WAN206 may be less expensive than the bandwidth of the connections over thefirst WAN220, as may be the case if thefirst WAN220 is a cellular telephone network and the second WAN is a wired Ethernet network. As another example, thepersonal server212 may have greater computing resources than themobile device202 and therefore be more suitable for transmitting multiple messages, as may be the case if themobile device202 is a cellular telephone and thepersonal server212 is a full-featured desktop PC. Note that although the destination clients232a-care shown inFIG. 2A as being connected directly to theWAN206, the destination clients232a-cmay be connected to theWAN206 indirectly through the sharedserver204 or in other ways.
Another function that may be performed by thepersonal server212 is to storepersonal data214 for theuser222. As used herein, the term “personal data” refers to any data associated with theuser222, such as text, image, or audio files created, received, owned, or otherwise under control of theuser222. It may be desirable to storesuch data214 on thepersonal server212 instead of or in addition to themobile device202 for a variety of reasons. For example, thepersonal server212 may have significantly greater storage capacity than themobile device202. If thepersonal server212 is a PC and themobile device202 is a cellular telephone, for example, thepersonal server212 may easily have over a million times greater persistent storage capacity than themobile device202. Thepersonal server212 may also have significantly greater processing power than themobile device202, making it more suitable to perform image processing, spell checking, automatic text translation, text-to-speech translation, speech recognition, or other kinds of processing on thepersonal data214.
Thepersonal data214 may come to be stored on thepersonal server212 in any of a variety of ways. For example, themobile device202 may transmit thepersonal data214 to thepersonal server212 along with specific instructions to store thepersonal data214 on thepersonal service212. For example, theuser222 may create a word processing document using themobile device202 and instruct thepersonal server212 to store the document to save storage space on themobile device202. Similarly, backup software executing on themobile device202 may transmit some or all of the data stored on themobile device202 for backup storage in thepersonal data214. Thepersonal server212 may create thepersonal data214 by logging incoming and/or outgoing messages which pass through thepersonal server212, such as email messages, instant messages, or SMS messages. Such logging may be configured to be performed automatically, with or without filtering as desired by theuser222. Such configuration may be specified by theuser222 by modifyingconfiguration information236 in thepersonal server212 and/or by modifying theaccount information236aassociated with theuser222.
Thepersonal server212 may also, for example, decide to storeincoming messages218 in thepersonal data214 based on predetermined criteria. For example, referring toFIG. 3L, a flowchart is shown of amethod365 that is performed by thepersonal server212 to store data based on predetermined criteria according to one embodiment of the present invention. Thepersonal server212 receives a message from themobile device202 or the shared server204 (step366). Thepersonal server212 determines whether the message satisfies predetermined criteria (step368). If such criteria are satisfied, thepersonal server212 stores the message, or data derived therefrom, in the personal data (step370). The message may also be forwarded to themobile device202. For example, thepersonal server212 may be configured to store any incoming messages larger than a particular predetermined size in thepersonal data214 rather than transmitting such messages to themobile device202. Rather than forwarding such messages to themobile device202, thepersonal server212 may, for example, transmit a smaller message to themobile device202 indicating that the original (larger) message has been received and stored in thepersonal data214. Theuser222 may, for example, choose to access thepersonal data214 using the personal server directly212, as in the case where thepersonal server212 is a home PC owned by theuser222.
Theuser222 may storepersonal data214 directly on thepersonal server212, without going through an intermediary such as themobile device202, thenon-personal server212, or the sharedserver204. For example,user222 may create files using thepersonal server212 and store such files in thepersonal data214. As another example, theuser222 may purchase, download, or otherwise obtain files (such as digital audio/video files) and store such files in thepersonal data214. Once such files are stored in thepersonal data214, they may be processed and transmitted in any of the ways described herein.
Thepersonal server212 may include means for transmitting some or all of thepersonal data214 to themobile device202. For example, referring toFIG. 3M, a flowchart is shown of amethod371 that is performed by thepersonal server212 to transmit some or all of thepersonal data214 to themobile device202. Thepersonal server212 may receive a request from themobile device202 to transmit some or all of thepersonal data214 to the mobile device202 (step372). In response, thepersonal server212 may transmit the requested data to the mobile device202 (step374). In this sense, thepersonal server212 may act, for example, as a file server to themobile device202. Alternatively, for example, thepersonal server212 may transmit some or all of thepersonal data214 to themobile device202 when thepersonal server212 detects that a low-cost connection has been established between thepersonal server212 and themobile device202. In any case, the ability to storepersonal data214 on thepersonal server212 rather than themobile device202 advantageously leverages the increased storage capacity, processing power, and bandwidth available to thepersonal server212 compared to themobile device202.
Thepersonal data214 may be any kind of data, such asstatic files214 for storage, messages transmitted by themobile device202, or messages having themobile device202 as their intended destination. For example, theconfiguration information236 may be modified to configure thepersonal server212 to receive messages (such as email messages, instant messages, or SMS messages) on behalf of themobile device202. Referring toFIG. 3N, a flowchart is shown of amethod375 that is performed by thepersonal server212 according to one embodiment of the present invention to selectively receive messages on behalf of themobile device202. Thepersonal server212 receives a message having themobile device202 as its destination (step376). If thepersonal server212 is configured to receive messages on behalf of the mobile device202 (step378), thepersonal server212 stores the message for the mobile device202 (step382). Otherwise, thepersonal server212 transmits the message to the mobile device202 (step380). Messages stored by thepersonal server212 on behalf of themobile device202 may be retrieved by theuser222 in any of the ways described above.
Alternatively, thepersonal server212 may be configured to receive messages on behalf of themobile device202 by modifying theaccount information236aat the non-personal server230. For example, referring toFIG. 30, a flowchart is shown of amethod381 that is performed by the non-personal server230 according to one embodiment of the present invention to enable thepersonal server212 to selectively receive messages on behalf of themobile device202. The non-personal server230 receives a message having themobile device202 as its destination (step382). The non-personal server230 determines whether it is configured to transmit messages to themobile device202 or to the personal server212 (step384). If the non-personal server230 is configured to transmit messages to themobile device202, the non-personal server230 transmits the message to the mobile device (step386). Otherwise, the non-personal server230 transmits the message to the personal server212 (step388).
Themobile device202, rather than the non-personal server230, may determine whether a particular message is to be transmitted to thepersonal server212 rather than to the mobile device. For example, the non-personal server230 may transmit a header of the incoming message to themobile device202. Themobile device202 may determine whether the message should be transmitted to themobile device202 or to thepersonal server212 based on information in the header (such as the size of the message). Themobile device202 may then instruct the non-personal server230 appropriately, in response to which the non-personal server230 may transmit the body of the message to themobile device202 or to thepersonal server212. Alternatively, thepersonal server212 may make the determination in the manner just described for themobile device202. In other words, any one of the non-personal server230, themobile device202, and thepersonal server212 may determine whether an incoming message is to be transmitted to and stored by thepersonal server212 or by themobile device202.
Another function that may be performed by thepersonal server212 is to execute programs on behalf of themobile device202. For all of the reasons described above, thepersonal server212 may be more suitable than themobile device202 for executing a variety of programs. Referring toFIG. 3P, a flowchart is shown of amethod389 that is performed by thepersonal server212 in one embodiment of the present invention to execute programs on behalf of themobile device202. Themobile device202 may transmit an instruction to thepersonal server212 to execute aprogram256 residing on (or otherwise under the control of) thepersonal server212. In response to receiving such a request (step390), thepersonal server212 may execute the program256 (step392). For example, theprogram256 may be an image processing program which may process an image stored in thepersonal data214 by reducing its dimensions to a size suitable for transmission to and display by themobile device202. Upon executing theprogram256, thepersonal server212 may transmit the output of the program256 (such as the reduced image) or any other response to themobile device202.
Similarly, thepersonal server212 may perform processing for a game on behalf of theuser222. For example, theexecutable program256 may be a game which is too expensive or resource-intensive to execute on themobile device202. Theuser222 may therefore play the game using themobile device202 by executing the game on thepersonal server212 and using themobile device202 as an interface with thepersonal server212. Similarly, theexecutable program256 may be a client or server program for a networked multiplayer game, thereby allowing theuser222 to play such a game even if it would be impossible or prohibitively expensive to execute the game client and/or server on themobile device202 itself.
Thepersonal server212 may become inaccessible over theWAN220 or otherwise become unavailable for use for any of a variety of reasons. For example, thepersonal server212 may crash, be turned off, or lose its connection to theWAN220. Such inaccessibility/unavailability may last for varying periods of time. In some cases, thepersonal server212 may be able make itself become available again, such as by re-establishing a connection to theWAN220 automatically. In other cases, it may be necessary for theuser222 to make thepersonal server212 available, such as by rebooting it or manually reconnecting it to theWAN220.
As described above, the non-personal server230 may serve as an intermediary between thepersonal server212 and the sharedserver204. For example, when thepersonal server212 is available, theincoming message218 transmitted by the sharedserver204 to themobile device202 may first be received by the non-personal server230, then transmitted by the non-personal server230 to thepersonal server212, and then transmitted by thepersonal server212 to themobile device202. The non-personal server230 may use theaccount information236a-cto identify the personal server to which the message should be sent. If, however, thepersonal server212 becomes unavailable, the non-personal server230 will be unable to transmit messages to thepersonal server212 for the duration of that unavailability.
In one embodiment of the present invention, the non-personal server230 stores data destined for thepersonal server212 as temporarypersonal data234 when thepersonal server212 is determined to be unavailable. Note that although only temporarypersonal data234 is shown inFIG. 2B, the non-personal server230 may store temporary personal data for use user served by the non-personal server230. For example, the temporarypersonal data234 may be stored as part of theaccount information236afor theuser222, and the remainingaccount information236b-cmay include temporary personal data for additional users of the non-personal server230.
Referring toFIG. 3Q, a flowchart is shown of amethod393 that is performed by the non-personal server230 to store data destined for thepersonal server212 when the personal server is unavailable. The non-personal server230 receives a message from the sharedserver204 or the mobile device (step394). Thenon-personal server212 identifies the personal server associated with the message (step396). The non-personal server230 determines whether the identified personal server is available over the WAN220 (step398). If thepersonal server212 is available over theWAN220, the non-personal server230 transmits the message to the personal server212 (step400), as described above. Otherwise, the non-personal server230 stores theincoming message218 in the temporarypersonal data234 associated with the mobile device202 (step402).
The non-personal server230 may, for example, transmit a message directly to themobile device202 notifying it that theincoming message218 is available for retrieval. In response, themobile device202 may retrieve (automatically or in response to a command from the user222) theincoming message218 from the temporarypersonal data234 without going through thepersonal server212. Alternatively, the non-personal server230 may transmit themessage218 to thepersonal server212 at a later time, when thepersonal server212 again becomes available to the non-personal server230 over theWAN220. Thenon-personal server220 may, for example, periodically attempt to establish contact with thepersonal server212 and transmit themessage218 to thepersonal server212 when such contact is established (steps398,402). Alternatively, thepersonal server212 may initiate contact with the non-personal server230 when thepersonal server212 establishes a connection with theWAN220. In response, the non-personal server230 may transmit themessage218 to thepersonal server212. In any case, once themessage218 has been transmitted to thepersonal server212, it may be handled by thepersonal server212 in any of the ways described above.
Outgoing messages may also be stored in the temporarypersonal data234. For example, when themobile device202 transmits theoutgoing message210, the non-personal server230 may receive theoutgoing message210 and determine whether thepersonal server212 is accessible to the non-personal server230 over theWAN220. If thepersonal server212 is accessible, the non-personal server230 may transmit theoutgoing message210 to thepersonal server212, and thepersonal server212 may handle the message in any of the ways described above. If thepersonal server212 is not accessible, the non-personal server230 may store theoutgoing message210 in the temporarypersonal data234. The non-personal server230 may transmit theoutgoing message210 from the temporarypersonal data234 to thepersonal server212 when thepersonal server212 again becomes accessible to the non-personal server, as described above.
As may be appreciated from the description above, embodiments of the present invention have a variety of advantages. For example, various benefits may be obtained by selecting as the personal server212 a computing device that is more powerful than themobile device202 and/or which has a higher-bandwidth connection than themobile device202, and which therefore may perform processing tasks more efficiently than themobile device202. For example, thepersonal server212 may filter, log, store, compress, and broadcast data more efficiently than themobile device202. The home PC of theuser222 may be selected as thepersonal server212, thereby taking advantage of computing resources which would otherwise likely remain underutilized. Another advantage of selecting the user's home PC as thepersonal server212 is that theuser222 may access thepersonal data214 either remotely using themobile device202, or directly at thepersonal server212 when theuser222 returns home.
Another advantage of various embodiments of the present invention is that thepersonal server212 may serve as a proxy for a system, such as a conventional instant messaging system, which is not particularly well-suited to direct use in conjunction with a mobile device such as a cellular telephone. For example, instant messaging systems, with few exceptions, use complex, vendor-specific, heavyweight protocols. These shortcomings make them difficult to use on mobile devices, which typically have little processing power, inadequate space for multiple IM clients, and extremely limited data bandwidth. By providing the personal server, which has greater processing power, storage space, and bandwidth, with the ability to communicate directly with the IM server and to transmit IM information to and from the mobile device using a protocol that is more suitable for themobile device202, thepersonal server212 may be used to provide themobile device202 with the benefits of a service such as instant messaging without the typical drawbacks.
Some existing systems use shared public servers to perform certain functions described herein, such as logging and filtering instant messages for users. It is advantageous, however, to perform these and other functions using a personal server rather than a shared public server. In general, thepersonal server212 may provide services to themobile device202 more flexibly, less expensively, more securely, and more efficiently than a shared public server. For example, one advantage of using the user's home PC, or other computer under the control of theuser222, as an IM proxy or other proxy, is that theuser222 may configure thepersonal server212 as desired. For example, theuser222 may tune the personal server's performance, such as by customizing the configuration of the pseudo-client240 or upgrading the hardware of thepersonal server212, unlike in conventional systems, in which the IM server is under the control of a service provider rather than the user. Furthermore, theuser222 may establish a secure communications channel between themobile device202 and thepersonal server212, even when such a secure channel would not be available for use with a shared public server. In addition, service providers typically charge an additional fee for using shared public servers to performs functions such as logging and filtering. Theuser222 may avoid such costs by using thepersonal server212 to perform such functions.
It is to be understood that although the invention has been described above in terms of particular embodiments, the foregoing embodiments are provided as illustrative only, and do not limit or define the scope of the invention. Various other embodiments, including but not limited to the following, are also within the scope of the claims. For example, elements and components described herein may be further divided into additional components or joined together to form fewer components for performing the same functions. In particular, techniques described herein may be combined with each other in various ways that will be apparent to those having ordinary skill in the art based on the description herein.
Themobile device202 may be any kind ofmobile device202 capable of performing the functions described herein. For example, themobile device202 may be a cellular telephone, personal digital assistant (PDA), laptop, or a combination thereof. Thepersonal server212 may be any kind of computing device, such as a workstation or desktop or laptop PC.
The techniques described above may be implemented, for example, in hardware, software, firmware, or any combination thereof. The techniques described above may be implemented in one or more computer programs executing on a programmable computer including a processor, a storage medium readable by the processor (including, for example, volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. Program code may be applied to input entered using the input device to perform the functions described and to generate output. The output may be provided to one or more output devices.
Each computer program within the scope of the claims below may be implemented in any programming language, such as assembly language, machine language, a high-level procedural programming language, or an object-oriented programming language. The programming language may, for example, be a compiled or interpreted programming language.
Each such computer program may be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a computer processor. Method steps of the invention may be performed by a computer processor executing a program tangibly embodied on a computer-readable medium to perform functions of the invention by operating on input and generating output. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, the processor receives instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions include, for example, all forms of non-volatile memory, such as semiconductor memory devices, including EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROMs. Any of the foregoing may be supplemented by, or incorporated in, specially-designed ASICs (application-specific integrated circuits) or FPGAs (Field-Programmable Gate Arrays). A computer can generally also receive programs and data from a storage medium such as an internal disk (not shown) or a removable disk. These elements will also be found in a conventional desktop or workstation computer as well as other computers suitable for executing computer programs implementing the methods described herein, which may be used in conjunction with any digital print engine or marking engine, display monitor, or other raster output device capable of producing color or gray scale pixels on paper, film, display screen, or other output medium.