>Am 05.03.2008 um 23:47 schrieb Peter Edwards: >> Jay wrote: >>> On Wed, Mar 5, 2008 at 11:48 AM, Moritz Onken >>> <[EMAIL PROTECTED]> >> wrote: >>>> I'm combining ajax with push. So it's a real push service, the >>>> website is not pulling the data on a constant time rate. >>>> >>>> A process per client is really bad. I'll need to serve hundreds of >>>> client at the same time. Seems like push is not an option... >>>> >>> >>> Take a look at cometd: http://cometd.com/ >> >> Moritz, I've done something similar before using POE to handle many >> connections more cheaply than Apache (thanks to Matt Trout for the >> suggestion). It was to serve XML formatted requests though you could >> return JSON formatted data just as easily >> http://search.cpan.org/perldoc?POE::Component::Server::TCP > >But I still need a lot of code which is run by catalyst, like authentication and of course the whole dbic schema. >What about Catalyst::Engine::HTTP::POE? > >cometd.com is not very informative ...
In the article http://www.irishdev.com/NewsArticle.aspx?id=2166 see that diagram of an SOA style architecture? http://alex.dojotoolkit.org/wp-content/Comet.png Browser UI = HTML + Javascript Comet client = Javascript driven by timed events talks persistent TCP to Comet event bus = proxy server, e.g. perlbal or nginx or POE TCP daemon talks HTTP or XML-RPC to Server-side processing = your Catalyst app You need to split the management of the many persistent TCP connections from the generation of content. In a typical web server setup you achieve this by using a scalable caching proxy front end to do the TCP socket handling and a Catalyst backend for the content. In your case you might need something a bit smarter in the front end, hence my mention of a custom POE daemon. Or you could write a plugin for perlbal http://search.cpan.org/dist/Perlbal/. You could make an XML-RPC or HTTP request from the front end to Catalyst to authenticate, and thereafter run periodic front to backend GETs and cache them (in the "comet event bus" part) ready to serve to the comet client via TCP. That way you don't need to tie up a 30MB Catalyst process just to hold open a socket, are spreading the request load evenly across time and can write it all in Perl. Alternatively, if you have an enormous load the for the proxy you could use nginx and write a C module to call out to your backend http://www.riceonfire.org/emiller/nginx-modules-guide.html Regards, Peter http://perl.dragonstaff.co.uk _______________________________________________ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/