From this article on Wikipedia:
Keepalive messages were not officially supported in HTTP 1.0. In HTTP 1.1 all connections are considered persisten
Actually, the HTTP server can "push" data to a connected http client without the client requesting it. See "HTTP server push" at http://en.wikipedia.org/wiki/Push_technology. However it does seem to be commonly implemented.