I did some mobile device testing with the chat demo:
iOS 3.2: Works
iOS 4.0.1: Works
webOS 1.4.1: Works
Android 2.1: Fails, tries to use flashsocket. Works with xhr-polling.
None of the devices were able to recover reliably from extended sleep
or movement between Wi-Fi and cellular data. This is difficult support
through transport alone since the XHR can get into a state where it
waits a long time to timeout even though Wi-Fi is up and running
again. Listening for the online and offline events where available can
help though.
As for side effects:
There was a bug with XHR long polling in iOS 2 & 3: resource requests
were distributed across the two active connections and remained in
their assigned connection's queue regardless of whether the other
connection was free. This meant that an XHR long poll could block
loading of images and other resources until it received a response or
was aborted. I don't know if this was ever fixed.
If it is feasible for the page, implementors can hack around the stuck
progress bar on Android and iOS by deferring socket.connect() until
after window.onload. Adding a setTimeout(func, 100) in the load event
handler should do it. Unfortunately there is timing involved, if
anyone knows of a better event to listen for I'd love to hear about
it.
BTW: Github doesn't support submodules in download archives so they're
missing the example client content.
Matt