Notifications with Jabber/XMPP-based messages

Registered by Philipp C. Heckel on 2011-06-22

At the moment, clients have to ask the storage server every 10-30 seconds if there are new updates. Not only is this ugly, it also consumes traffic where is is not necessary. The problem is that the server cannot notify the clients if changes occurred because it's just a flat storage with not "intelligence".

SparkleShare distributes change notifications to all online users via IRC. Although this works quite good, I believe XMPP/Jabber is the better option. Here's how it should work:

Clients add their Jabber address+password to their "profile" (= machine name, client name, profile picture, and jabber address+password), so that these addresses are available to all participating clients. On startup, Syncany connects to the Jabber server.

After any local change, i.e. after uploading the new update file, the local client sends a jabber "notify" message to all clients. This message does not have to include any changes. The word "CHANGE" is enough.

What do you think of the idea? Any suggestions?

Possible libraries can be found here: http://xmpp.org/xmpp-software/libraries/ (select "Show 100 entries").

Smack looks nice. It's Apache 2 License, so it can be included.
http://www.igniterealtime.org/projects/smack/

Here are some examples:
http://www.codeproject.com/Articles/205590/Smack-XMPP-and-GTalk?display=Print

I've also created a small test that demostrates what I mean:
http://bazaar.launchpad.net/~binwiederhier/syncany/newsync/view/head:/syncany/src/org/syncany/notification/JabberNotification.java

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
Drafting
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Sprints

Whiteboard

What about http://code.google.com/p/pubsubhubbub/ is that something that could be used in this context ?

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.