Our application, which targets IE8 (I know, ugh...) previously used DWR 3.0 RC2. As part of a move to make the application more scalable by moving to Java Servlet 3.0+ standards, I upgraded to DWR 3.0 RC3 (we're excited about the asynchronous support). After the upgrade, I've noticed that IE8 constantly shows a "loading" status. I know that's a bit vague, so I'll try to explain:
Using DWR 3.0 RC2:
During initial page load, the bottom status bar shows the status of the web requests. This happens fast, but during this process, the bottom status bar will show status updates similar to "(4 items remaining) - Downloading picture [url]" "Waiting for [url]..." with a progress bar to the middle-right of the bottom status bar. Once all the resources have downloaded/loaded, the progress bar disappears, and the "status" is changed to "Done."
Using DWR 3.0 RC3:
During initial page load, behavior is the same. However, once the resources are loaded, the bottom bar never shows "Done". Instead, the status changes to "Waiting for [random url]", and the progress bar slowly moves to the right, as if the requset is timing out. After a number of minutes, the progress bar will change be waiting for another random url, and the progress bar will restart. After a number of requests and an indeterminate amount of time usually between 5 and 15 minutes (but less than the session timeout), the status bar will show "Done", or the progress bar will disappear, leaving only the "Waiting for [random url]". At this point, any events pushed from the server using DWR will not register on the client.
- The "random url" that seems to continuously load seems to be most often "about:blank" or "[application url]/dwr/call/htmlpoll/ReverseAjax.dwr".
- Each time our application pushes an event from the server via DWR, the resource that is currently waiting shows completing, and then a new request starts and begins "waiting". Based on this, it seems like something about the Reverse Ajax polling behavior is now visible to the IE8 status bar.
I experienced this behavior after exchanging the DWR 3.0 RC2 .jar with the DWR 3.0 RC3 .jar, with no other code changes.
I was hoping you might be able to help me, either with suggestions for a fix or some suggestions to better narrow down on the broken code. I can open a bug report, if that is a better means to a solution.
Thanks for your time.
The reason for the difference you're seeing is probably this (from 3.0 RC3 release notes):
This means that reverse ajax requests now complete their full one minute cycle independent of whether data has been transferred or not. In early close mode reverse ajax requests were renewed as soon as data was transferred. Some browsers show ongoing progress for the initial reverse ajax request but not for subsequent ones, so if data was sent with early close mode the progress indicator for the initial request would disappear quickly.
Unfortunately it's difficult to maintain a consistent "progress indicator experience" in all browsers as the different vendors' heuristics vary quite a bit, so this is not something we test. Also, it does not allow automatic testing due to its visual nature.
That being said, you might want to experiment with delaying the call to dwr.engine.setActiveReverseAjax() through setTimeout() as that sometimes gets rid of the progress bar.
The problem with server pushes not working after some time does not sound right so please tell us more about that, configuration etc. It'd be great if you could also try running our reverse ajax clock demo in the same environment to see if you get the same failure.
Kevin Shaw wrote:
|Free forum by Nabble||Edit this page|