Difference between revisions of "Bidirectional-streams Over Synchronous HTTP (BOSH) (XEP-0124)"

Jump to navigation Jump to search
Line 25: Line 25:
* [http://jwchat.sourceforge.net/ JWChat] - full featured JavaScript client. Needs CM to operate, uses [http://zeank.in-berlin.de/jsjac/ JSJaC] library.
* [http://jwchat.sourceforge.net/ JWChat] - full featured JavaScript client. Needs CM to operate, uses [http://zeank.in-berlin.de/jsjac/ JSJaC] library.
* [http://www.soashable.com/ soashable]
* [http://www.soashable.com/ soashable]
* [http://www.tigase.org/project/minichat Tigase Minichat]
* [http://www.tigase.org/project/minichat Minichat]
* [http://www.tigase.org/project/messenger Tigase Messenger]
* [http://www.tigase.org/project/messenger Tigase Messenger]

Revision as of 07:23, 11 June 2008


BOSH (or HTTP binding) is a technique designed for asynchronous XMPP communication between client and server using HTTP. Unlike Jabber HTTP Polling (XEP-0025), it uses multiple request/response pairs to improve responsiveness and avoid unnecessary polling. Besides client and server, there is a Connection Manager entity in BOSH architecture, that serves as a mediator handling HTTP requests from clients and communicating with server. Client communicates with CM via HTTP-POST requests/HTTP responses defined in mentioned XEP and CM communicates with XMPP server either acting as ordinary XMPP client or using component protocol. For sake of server-initiated XMPP messages there should be always a HTTP request pending in client-CM connection. In practice, CM can be standalone HTTP server or extension of XMPP server (more on the technique)

Possible utilization is in web-based XMPP applications or as an option for users behind restrictive firewalls.

List of XMPP software implementing BOSH


Servers with built-in Connection Manager.

Standalone Connection Managers

Act as a proxy between client and XMMP server.

  • Araneo - Minimal CM written in Python using Twisted.
  • Punjab - Python and Twisted again.
  • rhb - CM in Ruby.
  • JabberHTTPBind- Java servlet implementing XEP-0124.



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


A small, low-volume discussion list about BOSH technologies is located at bosh@xmpp.org -- join the list by sending email to bosh-subscribe@xmpp.org or by visiting http://mail.jabber.org/mailman/listinfo/bosh.


Matthew Wild added BOSH support to the gloox C++ library as part of Google Summer of Code 2007.

Tomas Karasek is adding BOSH support to the Gajim client as part of Google Summer of Code 2008 (blog).