Sunday, June 1, 2008

BOSH in XMPP software

Sooner or later I will have to test my code with different servers and Connection Managers so I did some research about existing HTTP Binding implementations. BOSH is described in XEP-0124 and XEP-0206. 0124 describes mechanism, syntax and error handling for reliable transfer of XML streams over HTTP in general. 0206 addresses XMPP - session negotiation, XMPP errors processing and SASL authentication.

Besides client and server, there is a Connection Manager entity in BOSH architecture. Client communicates with CM via HTTP POST requests/responses defined in mentioned XEPs and CM communicates with XMPP server either acting as a ordinary XMPP client or using component protocol. CM can be standalone HTTP server or built-in functionality (or extension) of XMPP server. If you want to connect to XMPP server via BOSH CM, you need CM URL and CM port number (e.g. "" and 80 for[in czech]) in addition to XMPP server address and port. With built-in Connection Managers, IP addresses of XMPP server and CM will be the same and just the port numbers will differ.

Follows overview of XMPP software with BOSH support.

Servers with built-in Connection Manager.
Standalone Connection Managers
Act as a proxy between client and XMMP server.
  • gloox (C++) - BOSH support done by MattJ during GSoC 2007. BOSH Connection classes are included in svn trunk and 1.0-beta2 (download page).
  • xmpp4r (Ruby)
  • xmpp4js (JavaScript)
  • JSJaC (JavaScript)
  • emite (Google Web Toolkit, Java) - XMPP library and client GUI for gwt, connecting through BOSH Connection Manager.
I wasn't able to experiment with all listed software but I will keep updating this overview during summer as I'll progress with testing. Further reading can be this post on MattJ's blog.


Max said...

Hi Thomas,

Look at this client :

TomK said...

Hey max,
thanks for the link, I added it to the list. BTW, there's no "h" in my name.

Max said...

Sorry for the "h". I've seen it just after posting. The reason is that in France, Tomas is spelled Thomas so... I'm used to write Thomas. Sorry again :).

Good luck for your SoC !

huni said...

emite is great! there is also soashable, which I stumled upon a while ago.

keep up the good work, Tomas!

TomK said...

thanks for the link Safa