How to display HTML to the browser incrementally over a long period of time?
Long polling is a common technique to do something like this; to briefly summarise, it works as follows:
The client sends an XHR to the server.
- If there is data ready, the server returns this immediately.
- If not, the server keeps the connection open until data does become available, then it returns this.
- If the request times-out, go back to 1).
The page running on the client receives this data, and does what it does with it.
- Go back to 1)
This is how Facebook implements its chat feature.
This article also clears up some of the misconceptions of long-polling, and details some of the benefits of doing so.
The client will close the connection when it does not receive any data for a certain time. This timeout cannot be influenced by HTTP headers. It is client-specific and usually set to 120 seconds IIRC.
So all you have to do is send small amounts of data regularly to avoid hitting the timeout.
I think a more robust solution is a page with a Javascript timer that polls the server for new data. Keeping the response open is not something the HTTP protocol was designed for.