At 05:58 PM 4/7/2003 -0700, Brett Carter wrote:
<snip>
I would like to use Response.write() to push my status messages on the fly. Since I don't know which function calls will succeed and which will fail, I do not know "Content-Length" in advance. Therefore, I would like to use a streaming/chunked response as specified in HTTP 1.1.
I just finished a library to do just this. I'll have to ask my employer if I can release it, but I'm not sure http chunking is exactly what you want. Chunking takes the current page and dynamically replaces it with whatever new content you send in each chunk.
That would be really cool. I guess replacing will be fine: If I need to quote stuff from the "old" page, I'll just include it again...
How do I do this in Zope?
I tried to do "response.setHeader('Content-Type', 'multipart/x-mixed-replace')" but couldn't get it working. (Also, it looks as if this will only work in Netscape but not IE. True? Then unfortunately I can't go that route anyway.)
You're on the right track, I just used a combonation of response.setHeader and response.write. You're also correct that IE doesn't support chunking; better send a bug report to bill. That said, I'm not sure this method ever even made it into the HTTP spec, but all netscape and gecko based browsers support it in my experience. I've seen other sites make IE work with an ActiveX plugin of some sort; don't ask me where or how to get it, I don't do IE.
Mmmhhh. When playing around with "content-type" and "transfer-encoding" I actually got something back from IE6 that looked like it was doing the right thing. But then again there were "etag" and "transfer-ecnoding" quoted on the page, which I never (directly) invoked. Also some numbers. Very odd. I think I need a bit more insight on HTTPResponse.py and how it deals with manipulations, but I find it hard to read its source code. Also, what's the exact difference between streaming and chunking? (I've got an idea but no facts, esp. in regards to HTTPResponse.py)
I also tried to leave the header alone and just "Response.write()" the multipart content-type and its boundary and the content-type's of the parts, but ZPublisher just returned the plain text...
Getting the headers set correctly is a bit tricky, each chunk needs to be delimited by a set of boundry strings defined when you first set your content type header. The full explaination is at: http://wp.netscape.com/assist/net_sites/pushpull.html
Yup, read that. And I enjoyed reading "mimetools.choose_boundary()", too. lol My problem now is that I need something that works with IE. There's funny things going on with my hairs and toes when I hear the word "ActiveX plugin", so I'm still hoping for alternatives. Thank you for your response :-), and that library of yours sounds like a good thing(tm). Maybe you can ask your employer if you can pass it on. Cheers, Danny
-Brett