DWR is publishing random events using Reverse Ajax to the OpenAjax Hub. The GI user interface has subscribed to the relevant messages in the Hub, and so the interface gets updated.
The Lightstreamer version publishes a similar set of messages to the hub containing different data, but GI doesn't know that the thing causing the updates is different.
This way of working is nice for all the good pub/sub reasons - the components are more decoupled, testing and forward maintenance are easier, etc.
With a traditional request/response model, DWR (and Lightstreamer) would be calling GI routines to update. With the pub/sub model the distinction between client and server is gone because the UI publishes things it's interested in back to the hub. There's no reason the UI has to be GI even: any UI that groks the OpenAjax hub can play. We could even have several UI components listening to the same messages on one page.
The OpenAjax Hub is getting close to a 1.0 release, and I'm hoping that DWR will have a server-side version of the OpenAjax hub soon after. This would allow you to transparently co-ordinate remote hubs, and even allow publishing of messages from one browser to another.
I've put the DWR version live so anyone can have a play. It's not exciting, but you can see it in action. Just click on an "Industry Sector" to see messages published to that sector.
See the DWR/OpenAjax/GI demo. I hope to move where it is hosted soon, and this is definitely something of a test, so don't be surprised if you get a 404. I hope we can get a demo of the Lightstreamer version live soon too. Update: The app is currently offline while it is moved to a new home.