The Touch Orbiters, including the Web Orbiter feel slightly less responsive than a normal DCE Orbiter. This is because they are polling once per second to see if any updates have taken place. If an Orbiter update takes place while they are not polling there is a delay before the updates are shown.

Currently, to poll for changes, a Touch Orbiter client issues a "ANYNEWS?" request to the Proxy Orbiter. This is a short lived call which simply returns "yes" if changes have been made since the last poll, or "no" if there haven't been any changes. If "no" is returned, the client typically waits a second, then makes another "ANYNEWS?" request.

A slight tweak to the ANYNEWS? request can be made in order both speed things up and to eliminate having to poll every second. The tweak would make the request look like this: ANYNEWS? [<lastImageSent> <maxWaitMs>] (ex: ANYNEWS? 1 30000) Where the two extra parameters are optional so as to not break existing clients. The response could also be tweaked to return lastImageSent (which is just a one up counter that increments each time the Orbiter screen changes) instead of "yes" or "no". This has the added advantage that the Proxy Orbiter never gets out of sync with the client and the client knows that the Proxy Orbiter supports the extra paramters.

When calling ANYNEWS with these extra parameters, the semantics of the call change. If there has been a change since the last poll, the call will return immediately. If there haven't been any changes, the call will block until either an Orbiter update occurs or <maxWaitMs> milliseconds have expired. If an Orbiter update occurs while the request is blocked, the request will immediately unblock and reply with the new lastImageSent number. This cuts down on the number of ANYNEWS requests that need to be made and at the same time also allows the client to know immediately when an Orbiter change occurs.

If you'd like to experiment with these changes, please see the attached patch file. I'm not sure all the bugs are worked out yet, but the Web Orbiter is a lot more responsive with these changes.

Sorry, just realized that patch won't work for anyone who is running the latest version of the Web Orbiter code from Subversion. If you are running the latest, the attached WebOrbiter patch will work for you.

One change I made to the web orbiter is that clicking on the Orbiter screen doesn't cause the UI image to reload. The two events, clicking and reloading, are independent of one another. This is done because the RefreshImage ajax query will block till the Proxy_Orbiter actually generates the new screen. At that point the UI image will be refreshed.

The Touch Orbiters, including the Web Orbiter feel slightly less responsive than a normal DCE Orbiter. This is because they are polling once per second to see if any updates have taken place. If an Orbiter update takes place while they are not polling there is a delay before the updates are shown.

Currently, to poll for changes, a Touch Orbiter client issues a "ANYNEWS?" request to the Proxy Orbiter. This is a short lived call which simply returns "yes" if changes have been made since the last poll, or "no" if there haven't been any changes. If "no" is returned, the client typically waits a second, then makes another "ANYNEWS?" request.

A slight tweak to the ANYNEWS? request can be made in order both speed things up and to eliminate having to poll every second. The tweak would make the request look like this: ANYNEWS? [<lastImageSent> <maxWaitMs>] (ex: ANYNEWS? 1 30000) Where the two extra parameters are optional so as to not break existing clients. The response could also be tweaked to return lastImageSent (which is just a one up counter that increments each time the Orbiter screen changes) instead of "yes" or "no". This has the added advantage that the Proxy Orbiter never gets out of sync with the client and the client knows that the Proxy Orbiter supports the extra paramters.

When calling ANYNEWS with these extra parameters, the semantics of the call change. If there has been a change since the last poll, the call will return immediately. If there haven't been any changes, the call will block until either an Orbiter update occurs or <maxWaitMs> milliseconds have expired. If an Orbiter update occurs while the request is blocked, the request will immediately unblock and reply with the new lastImageSent number. This cuts down on the number of ANYNEWS requests that need to be made and at the same time also allows the client to know immediately when an Orbiter change occurs.

If you'd like to experiment with these changes, please see the attached patch file. I'm not sure all the bugs are worked out yet, but the Web Orbiter is a lot more responsive with these changes.

Hi esev,

This looks like a very nice idea. We will look at testing it in the iOS Orbiter asap. Foxi352, Uplink or I will post something here when we have something tested.