I managed to get real-time chat (and other real-time colab) working on IE4+ using long polling, by continuously adding <script> tags from JavaScript. The server would delay answering until there were new messages available, or some timeout. This was even before xmlhttprequest. Who needs websocket? :-)
Sounds fancy! My solution back then was infinitely auto-updating a frame with a meta refresh tag. It would receive a new <script> block that would update the contents of other frames. This of course wouldn't give real-time functionality.