[ejabberd] ebosh - BOSH connection manager written on top of Erlang/OTP

Abhinav Singh abhinavsingh at ymail.com
Tue Dec 11 13:39:41 MSK 2012


Hi,

We use ebosh as an independent component inside our infrastructure.
Since we wanted a bosh connection manager that can talk to every possible jabber service 
(google talk, jabber.org, our own jabber service, …) we went ahead and wrote ebosh.

mod_ebosh was just a proof of concept and does work very well. 
But as Mickael said it comes with it's own overhead.

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 github.

--
Abhinav Singh
http://abhinavsingh.com/

On 11-Dec-2012, at 1:55 AM, Mickaël Rémond <mickael.remond at process-one.net> wrote:

> Hello,
> 
> Actually, having a separate connection manager reduce the performance, as it inevitably introduce double parsing and serialization of the XML data structure.
> This is typical problem in separating the component.
> 
> -- 
> Mickaël Rémond
> 
> 
> On Mon, Dec 10, 2012 at 3:16 PM, Taybin Rutkin <trutkin at utest.com> wrote:
> Does this design improve upon mod_http_bind in features or stability?
> 
> Taybin Rutkin
> 
> 
> On Dec 10, 2012, at 4:13 AM, Abhinav Singh <abhinavsingh at ymail.com> wrote:
> 
>> Hello Everyone,
>> 
>> I am pleased to announce ebosh project - A BOSH connection manager written on top of Erlang/OTP principles.
>> It uses exmpp for xmpp client management, mochiweb or cowboy (configurable) as http server library and lager for loggin facility.
>> https://github.com/abhinavsingh/ebosh
>> 
>> Project also provides mod_ebosh - an ejabberd module that can be used as a replacement for standard ejabberd bosh module.
>> https://github.com/abhinavsingh/ebosh/tree/master/mod_ebosh
>> 
>> Few features are still in development, though initial version is quite stable and running in production for over an year.
>> 
>> --
>> Abhinav Singh
>> http://abhinavsingh.com/
>> 
>> _______________________________________________
>> ejabberd mailing list
>> ejabberd at jabber.ru
>> http://lists.jabber.ru/mailman/listinfo/ejabberd
> 
> _______________________________________________
> ejabberd mailing list
> ejabberd at jabber.ru
> http://lists.jabber.ru/mailman/listinfo/ejabberd
> 
> 
> _______________________________________________
> ejabberd mailing list
> ejabberd at jabber.ru
> http://lists.jabber.ru/mailman/listinfo/ejabberd

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.jabber.ru/pipermail/ejabberd/attachments/20121211/68f323f8/attachment.html>


More information about the ejabberd mailing list