A system and protocol for enabling bi-directional HTTP-based reliable
messaging through a Web proxy server via the Internet is presented. The
client processor residing on the private computer network side of the Web
proxy establishes two virtual channels with a server. One of the channels
is used for outgoing messages from the client to the server, and message
delivery acknowledgments. The other channel is used for incoming messages
from the server to the client, and message delivery acknowledgments. This
incoming channel is established and maintained by the client through the
Web proxy server so that the client has full control over the channel.
The establishment is accomplished by the transmission of an HTTP-based
"request" to the server. The server does not respond until and unless it
has a message to be transmitted to the client. Once such a message is
generated, the server generates an HTTP-based "reply" to this request,
and transmits it to the client via the Web proxy server. The client then
sends another HTTP-based request to the server with the message
acknowledgment included therein. The client may request that the server
reply to the request after some period of time to allow the client to
assess the health of the connection and avoid connection time out
disconnections by the Web proxy server. This period may be fixed or may
be dynamically adjusted.