A system and method for conducting a client-server application (e.g.,
instant messaging, VOIP telephony) using non-persistent communications.
Clients issue periodic heartbeat messages to a connectionless server
using a non-persistent (e.g., UDP) communication protocol. The heartbeat
messages identify the clients by unique client identifiers. When an
application server has an unsolicited communication for a client (e.g., a
new instant message, a new VOIP call), the application server retrieves
the client's address from the connectionless server if it does not
already have the address. The application server forwards the unsolicited
communication to the client via a non-persistent communication, and may
spoof the connectionless server if necessary to reach the client through
a firewall, proxy, NAT or similar entity. Clients that cannot use
non-persistent protocols establish persistent connections with a client
manager. The client manager issues heartbeat messages to the
connectionless server and receives and forwards unsolicited
communications for these clients.