DIGG IT!
Published
Saturday, September 02, 2006
at
11:59 AM
.
Nick Velloff ported the
XIFF XMPP library to AS3, great work Nick! I have this hidden love for XMPP/Jabber, I know its irrational but I fell for Jabber in 2001. When Flash 5 shipped, I worked with the original Jabber team to get Null byte support into the base Jabber presence server long before XMPP was an acronym. I then spent 2 years building a very large scale Jabber project which unfortunately never saw the light of day (grumble,grumble).
On the project we built a Jabber cluster on FreeBSD that scaled to 50K concurrent users. I have always believed that Presence + Flash Player is one of the best combinations of technology. On Apollo, presence addition has the ability to be a killer app. XMPP supports so many features/extensibility in the base protocol. My favorite XMPP feature is called OOB(Out Of Band ) that allows you to append extensible data into a message packet. Clients that can understand the OOB packet digest it, otherwise it is ignored by standard Jabber clients. When building custom applications on Jabber protocols, OOB is essential. It allows your custom client to send information that others cannot see or understand. Say you wanted to send a form to a user via IM, with OOB you just add the form data into an OOB message within an IM. The user will get the message and the custom client can expose the form as an attachment (attachments for IM, cool!). Once you have the ability to create a custom client, you begin to look at Presence very differently. Everyone thinks about Presence as an IM client but when you can make clients easily, you can support so much more.
On the project I worked on we wrote 3 custom clients. 1 was the main application called Intratainment, the second was a Bot called Fred (he moderated chat rooms in AS1 ), and the third was a client for our database. See all three of these application could talk to one another freely via OOB messaging. If you needed to add or query the DB, you tested if it had presence, then you would send it an OOB IM message and it would return a message. It is weird to think about a Database as having presence but indeed it does. Custom clients for Jabber are a great thing.
I cannot wait to dive into XMPP again with AS3. Nick, please contact me at tpatrick@adobe.com!
Great work Nick!
Cheers,
Ted :)
Don't know if you were aware of this or not, byut ColdFusion MX 7 has a built-in XMPP//Jabber IM Gateway along with a simple textual-based menuing system for interactive, 2-way real time human-computer communications, presence awareness, etc. Could make your life (and future projects) a whole lot more interesting :)
Damon
I used the cf 7 xmpp gateway and fds to build a gui client for googletalk IM. Always so much fun to make different technologies work together
Yeah, and of course, you can pass messages from one CF7 gateway to another as well, to do things like IM-to-IM message bridging (we ship with a IBM/Lotus Sametime IM Gateway) or IM-cell phone SMS text messaging bridging (the CF7 SMS Gateway), etc.
Damon
Hey Ted -
Just posted a new bot for the project so if anyone is checking it they will be able to have a friend to talk to ..
//nick
He spits out a few lines so - If it starts to get on your nerves, just message "quiet" to him and you will not receive any new messages.
50K concurrent users? How could do it at that time, using jabberd?
50K users was done with 7 load balanced servers handling connections and multiplexing messaging on a pair of JabberD servers.
JabberD and most socket servers are limited in the number of concurrent connections in the base os. At the time, FreeBSD (well tuned with kqueues) could handle 10K connections per machine. We customized the 10 JabberD servers to process messages on a backend server multiplexed.
Socket servers become connection bound in the OS long before they are message IO bound. The key is offloading connections and multiplexing the messages.
It was fun as hell getting this all set-up and working. Under the current design we could effectily scale to 250K on todays hardware easily.
Most of the clustering changes are still in the jabberd codebase. I cannot remeber the devs name that did the modifications for our team.
Cheers,
ted :)
another as3-xmpp-api-->
http://disktree.net/test/flabber/documentation/
Very nice work done, the multiplexing load balancing info was also pretty neat.
Thanks a lot Ted.