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

From XMPP WIKI
Jump to navigation Jump to search
(Added Punjab)
m
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Known server implementations:
__TOC__


* ejabberd
==Overview==
* Openfire
[http://xmpp.org/extensions/xep-0124.html BOSH] (or HTTP binding) is a technique designed for asynchronous XMPP communication between client and server using HTTP. Unlike Jabber HTTP Polling ([http://xmpp.org/extensions/xep-0025.html 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 [http://xmpp.org/extensions/xep-0114.html 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 ([http://xmpp.org/extensions/xep-0124.html#technique more on the technique])
* Tigase (on the way)
* [http://www.butterfat.net/wiki/Projects/PunJab PunJab] (a Python-based connection manager for any XMPP server)


[http://matthewstechnologyblog.blogspot.com/ Matthew Wild] is adding BOSH support to the [http://camaya.net/gloox gloox] C++ library as part of Google Summer of Code 2007.
Possible utilization is in web-based XMPP applications or as an option for users behind restrictive firewalls.
 
==List of XMPP software implementing BOSH==
===Servers===
Servers with built-in Connection Manager.
* [http://www.igniterealtime.org/projects/openfire/index.jsp Openfire] - XEP-0124 listed in [http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/protocol-support.html supported XEPs].
* [http://www.ejabberd.im/ ejabberd] - Release notes for version [http://www.process-one.net/en/ejabberd/release_notes/release_note_ejabberd_200/ 2.0.0] mention XEP-0124 support.
* [http://www.tigase.org/ Tigase Server] - BOSH support since [http://www.tigase.org/node/1353 3.0.2]
 
===Standalone Connection Managers===
Act as a proxy between client and XMMP server.
* [http://blog.bluendo.com/ff/bosh-connection-manager-update Araneo] - Minimal CM written in Python using Twisted.
* [http://www.butterfat.net/wiki/Projects/PunJab Punjab] - Python and Twisted again.
* [http://rubyforge.org/projects/rhb/ rhb] - CM in Ruby.
* [http://zeank.in-berlin.de/jhb/ JabberHTTPBind]- Java servlet implementing XEP-0124.
 
===Clients===
* [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.tigase.org/project/minichat Minichat]
* [http://www.tigase.org/project/messenger Tigase Messenger]
* [http://www.igniterealtime.org/projects/sparkweb/ SparkWeb]
 
===Libraries===
* [http://camaya.net/gloox gloox] (C++) - BOSH support done by MattJ during GSoC 2007. BOSH Connection classes are included in svn trunk and 1.0-beta2 ([http://camaya.net/glooxdownload download page]).
* [http://home.gna.org/xmpp4r/ xmpp4r] (Ruby)
* [http://xmpp4js.sourceforge.net/index.html xmpp4js] (JavaScript)
* [http://zeank.in-berlin.de/jsjac/ JSJaC] (JavaScript)
* [http://code.google.com/p/emite/ emite] (Google Web Toolkit, Java) - XMPP library and client GUI for gwt, connecting through BOSH
* [http://www.ag-software.de/index.php?page=agsxmpp-sdk agsXMPP] (.NET / c# / Mono)
* [http://www.ag-software.de/index.php?page=matrix MatriX] (Silverlight c#)
Connection Manager.
* [http://www.tigase.org/project/xmpp4gwt XMPP4GWT] - Java library for Google Web Toolkit framework
* [http://www.igniterealtime.org/projects/xiff/ XIFF] (Flex/ActionScript)
 
==Discussion==
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 http://mail.jabber.org/mailman/listinfo/bosh].
 
==Notes==
[http://matthewstechnologyblog.blogspot.com/ Matthew Wild] added BOSH support to the [http://camaya.net/gloox gloox] C++ library as part of Google Summer of Code 2007.
 
[http://tomk-soc08.blogspot.com/ Tomas Karasek] is adding BOSH support to the [http://gajim.org/ Gajim] client as part of Google Summer of Code 2008.
 
[http://gsoc.safasofuoglu.org/ Safa SofuoÄŸlu] updated and improved BOSH support of the [http://www.igniterealtime.org/projects/openfire/index.jsp Openfire] and [http://www.igniterealtime.org/projects/xiff/ XIFF] as part of Google Summer of Code 2008.

Latest revision as of 22:43, 27 January 2010

Overview

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

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.

Clients

Libraries

  • 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
  • agsXMPP (.NET / c# / Mono)
  • MatriX (Silverlight c#)

Connection Manager.

  • XMPP4GWT - Java library for Google Web Toolkit framework
  • XIFF (Flex/ActionScript)

Discussion

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.

Notes

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.

Safa SofuoÄŸlu updated and improved BOSH support of the Openfire and XIFF as part of Google Summer of Code 2008.