On Fri, Jul 22, 2011 at 2:54 PM, Mr. Puneet Kishor <punk.kish@gmail.com>wrote:
One, how can I ignore or reject the extra requests that are a result of fidgety behavior? I realize this is a not a Dancer-specific question per se, but, one, you guys are likely to have some helpful suggestions, and two, I want to have a fall-back on the server side also -- if Dancer is busy with a request from a client, is there a way to ignore further requests from the same client until at least the first one is complete?
Simple locking mechanism. You write down (NoSQL DB should be good for this, but also in-memory hash, and a bunch of other options that don't necessarily involve I/O) that a user started an action. Then you can make sure you don't operate on them again since they already started the action.
Two, this is more Dancer-specific, I guess -- once Dancer starts a process, how can I send periodic updates on that process back to the browser to power an ajax-y progress bar? My intent is to show a little floating div with a progress bar for each of the processes that were fired by the client.
I don't think that's possible at the moment. PSGI allows for that, but we haven't integrated a comfortable way to do through Dancer itself. You can subclass that part as a standalone PSGI app layer. Another way would be to use the trick from the first answer: use an in-memory mechanism to check for updates. Your code should be writing updates somewhere, and an AJAX request should make it available, thus allowing the JS code to know what stage a user is in. This is the currently used way in most applications, but PSGI allows to something a bit more clever.