[Zope3-dev] Zope 3 lacks Ajax capability?

Zachery Bir zbir at urbanape.com
Mon May 15 13:27:55 EDT 2006


On May 15, 2006, at 1:23 PM, Jeff Rush wrote:

> Benji York wrote:
>> Jeff Rush wrote:
>>> Just checking if I'm missing something -- with the removal of  
>>> HTTP streaming/chunking in 3.2, this means that the async bi- 
>>> directional persistent socket communications associated with Ajax  
>>> is NOT possible at this time?
>> Don't know if it is or isn't, but that's a novel definition of the  
>> "A" in AJAX that I haven't seen before.
>
> I got the definition from Wikipedia:
>   http://en.wikipedia.org/wiki/AJAX
> "Ajax, shorthand for Asynchronous JavaScript+CSS+DOM 
> +XMLHttpRequest, is a Web development technique for creating  
> interactive web applications."
>
> From the page of the guy that coined the name:
>   http://www.adaptivepath.com/publications/essays/archives/000385.php
>   "The name is shorthand for Asynchronous JavaScript + XML".
>
> The key points re Zope3 are:
>
> (1) a piece of Javascript downloaded with a page request turns  
> around and issues an HTTP GET back to Zope3 such that that  
> connection is kept open indefinitely, and the thread within Zope3  
> that is servicing that request hangs around and periodically shoves  
> bits of data (XML, JSON, whatever) down that pipe that get acted  
> upon by Javascript within the client's page.  This provides server  
> => client communications via a brief REQUEST and a neverending  
> RESPONSE chunked up into pieces representing operations run on the  
> client.
>
> (2) another piece of Javascript downloaded with a page request  
> similarly turns around and issues an HTTP GET/PUT back to Zope3  
> with a header to keep the connection open.  Over this pipe the  
> client can issue conventional multiple REQUEST/RESPONSE cycles to  
> invoke functions within the server, providing client => server  
> communications.  However the trick re Zope3 is that the URL/view to  
> which that request connects must be one that can rendevous with the  
> thread or a piece of state associated with (1) above, so that the  
> server and client have a meaningful basis on which to talk.
>
> So far as I can see, Zope3 doesn't provide any way to (1) hang onto  
> a thread that can send further response data at any time or (2)  
> manage a rendevous with a thread/context of another HTTP request  
> from the same browser.  I think I can implement (2) but (1) is  
> harder until streaming is added back in.  #1 could also be  
> implemented as some piece of context that is handed to an arbitrary  
> request-servicing thread each time data becomes available to send  
> to the client but that approach still needs some element that does  
> computation within the server and then signals it has data ready to  
> send to the client.

I think Benji's commenting on the fact that you're creating a  
synchronous connection when you hold it open like that.

FWIW, I've been using MochiKit's Async package for writing Zope 3  
apps with AJAX.

Zac



More information about the Zope3-dev mailing list