As explained by Abhinav Singh:
It uses exmpp for xmpp client management, mochiweb or cowboy (configurable) as http server library and lager for loggin facility.
This project also provides mod_ebosh, an ejabberd module that can be used as a replacement for standard ejabberd bosh module.
The ideal way of using ebosh would be to run it as a separate component decoupled from ejabberd. Scaling jabber service and bosh connection manager are two separate things for us.
Main reasons why we wrote ebosh were that we wanted to support:
1) multi-stream support
2) in-order message forwarding and key sequence protection
3) best possible transport from client environment: websockets, chunked encoding, jsonp. Not just long polling
4) erlang hot code loading i.e. bosh sessions shouldn't get interrupted during upgrades
5) even while our jabber service is down or upgrading, bosh sessions shdn't get interrupted.
6) efficient and reliable session rebinding when client returns back after some time
7) same bosh session for multiple browser tabs (somewhat how facebook does this by channelizing)
8) ... and several other features that were important for our usecase and application
Not all supported features are yet on public github repo, mainly because of there coupling with our internal business workflows. Though we plan to publish them soon on