tags:

views:

139

answers:

2

I saw a video of Google I/O and found an example of GWT UI being very consistent between clients. Which you can save, add, drag and drop in almost real time between clients. I currently don't understand the basic of this (In GWT, i think it implement Comet), so is there anyone can give me a term or definition for this? so I can get it on Google for more information?

Thank you very much

+1  A: 

Are you talking about when two or more people can work together from different computers, so they are both making changes to the same document? This is usually called "collaborative software". To "collaborate" means to work together.

You might want to take a look at google Wave, which eases the development of this kind of software.

hambend
this is not what i want. We asked here more on technical stuff, not usable software :), but thanks for your answer
DucDigital
+3  A: 

OK, I think what you are looking for is known under the names Comet, Server Push, Reverse Ajax (to name a few - they all mean the same, might be helpful when doing research on this subject). In short, it describes a model/situation when the server initiates the connection to the client (normally, it's the other way round). Of course, since this is the client side, it's not actually listening for connections, it's using some tricks to make it appear so - like long polling (trying to keep the connection with the server open for as long as possible, waiting for the server to have new data to send to the client. After the maximum connection time, the client immediately reconnects and so it goes). It's a very cool feature, one that when used properly can really improve user experience.

As for the implementations of this concept:

  • rocket-gwt has the Remoting module for it
  • cometd is a popular and a veteran competitor ;)
  • Ajax Push Engine is a relatively new addition - they fashion their own server (nicely written in C), which may or may not offer better performance than other solutions, the downside is that the server side might be harder to implement (either write modules in C or server side JavaScript through SpiderMonkey). Note: the APE server can only be run on Linux, BSD or Mac OS X.
  • NGiNX_HTTP_Push_Module - my favorite, because their protocol is the easiest/cleanest, they use nginx which means no extra server running (and no Java server needed - useful for people like me who don't use Java on the server side). The protocol is so easy that a pure GWT implementation should be easy to write (in fact, that's what I'm doing).

Depending on your server side you have many options - cometd is a solid solution, but the Bayeux protocol they use is a little nightmare, TBH. I've tried APE (Ajax Push Engine) some months ago, but at that time they didn't have SpiderMonkey/JavaScript support yet and only Mootools on the client side, so the experience with GWT wasn't so good. Looking at the project now, it's more mature and a lot of has been done (of the things that they promised ;)). I like NGiNX_HTTP_Push_Module the best purely because it seems the "lightest" of the bunch - both protocol and the server it uses (nginx is known for being fast and able to handle many connections at time - something which is very important when using Comet, since you'll have many clients "hanging" on connections all the time, waiting for data from the server).

Phew, sorry for the wall of text, hopefully it will be helpful (and hopefully that's what you were looking for :D).

Igor Klimer
Your comment was very helpful to me. I really appreciate your answer on this topic. I research about comet a lot and I all ended with cometd, but your post give me some more better solution for this. Personally speaking, i don't really like cometD also. Thanks for your answer!
DucDigital