XMPP over websockets.

You know we’re great XMPP fans : it’s by far the greatest protocol to “push” content from a server to client. It comes with stuff like identity, authentication, presence, and many awesome features. Yet, it is not as widespread as HTTP.

HTTP’s massive adoption was driven by some great server software : Apache, but also by the ubiquity of web browsers. Unfortunately, XMPP never had clients that could be hacked easily to build apps that go beyond chat. XMPP clients make way to many assumptions about what the user wants to do…

HTML5 comes with an awesome push technology : websockets. They open the door for support of XMPP in the browsers. Of course Bosh exists, but it’s not nearly as elegant, fast or scalable as the server needs to keep some kind of state. Whoever played with Bosh for a while knows how dirty it feels.

Today, we’re proud to release an Ejabberd module that builds Websockets in the XMPP server, and makes it a first class citizen in terms of underlying protocol. It’s probably not perfect though, and it’s definitely a first attempt, but feel free to install on your own servers. We also had to branch Jack ’s amazing Strophejs to split the core.js and bosh.js part, so we could easily replace bosh.js with websocket.js. This also needs more work and love, so feel free to branch and improve that code!

I sincerely want to thank Nathan for his awesome work on this. Let us know what you think!