Questions about Communication Manager

Hello Vaadin,

May I ask your guys two core questions?

Tracing net with FireBug, I found the JSON format of UIDL is like this:
[b]
for(;;);[{“changes”:
, “meta” : {}, “resources” : {}, “locales”:}]

[/b]

For unknown reason, sometimes my FireFox 3.6 can receive incompleted JSON messages like
for(;;);[{“changes”:[]
, “meta” : {}, "reso
. It causes the browser cannot jump out of waiting.

My questions are:

  1. Is there any solution for client side to avoid the “dead loop”? e.g. timeout, daemon thread, etc.
  2. When a previous UIDL POST is not finished, is it possible for web browser to send server another GET/POST? so that the server can handle them concurrently.

Thanks,
Watt

This looks to me very much like there would be some broken proxy/firewall/content inspection server/antivirus system in the loop - although a browser or server bug is also a possibility.

Normally, this message should be interpreted by the client side engine of Vaadin so that the for loop is never executed but only stripped away. If you get the browser executing this, there has been a problem earlier and the browser does not see this as a reply to an XHR request from the Vaadin client side engine (widgetset) but as a new page/script to load.

On the other hand, maybe when you say that the browser cannot jump out of waiting, you simply mean waiting for the rest of an incomplete message from the network. There are network timeouts in browsers, so I believe this should eventually lead to an exception and a communication error message being shown.

If the browser does see that an XHR request failed, it will (normally) show an error message - although I think in some special cases it might retry the request. However, if it does not know that an answer was not complete, it cannot do anything about it.

This is not exactly my domain, so maybe someone else has more to say.

Comments about the browser state:
A progress bar is displaying and UI doesn’t react any more after I click other components. Check the body received from server, the JSON message is incompleted. There is no communication error even after a long time.