Difference between revisions of "Tech pages/BOSH"

From XMPP WIKI
Jump to navigation Jump to search
(New page: == Overview == BOSH is "Bidirectional-streams Over Synchronous HTTP", a technology for two-way communication over the Hypertext Transfer Protocol (HTTP). BOSH emulates many of the transpo...)
 
m
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Overview ==
== Overview ==
 
BOSH is "Bidirectional-streams Over Synchronous HTTP", a technology for two-way communication over the Hypertext Transfer Protocol (HTTP). BOSH emulates many of the transport primitives that are familiar from the Transmission Control Protocol (TCP). For applications that require both "push" and "pull" communications, BOSH is significantly more bandwidth-efficient and responsive than most other bidirectional HTTP-based transport protocols and the techniques known as AJAX. BOSH achieves this efficiency and low latency by avoiding HTTP polling, yet it does so without resorting to chunked HTTP responses as is done in the technique known as Comet. To date, BOSH has been used mainly as a transport for traffic exchanged between XMPP clients and servers (e.g., to facilitate connections from web clients and from mobile clients on intermittent networks). However, BOSH is not tied solely to XMPP and can be used for other kinds of traffic, as well.
BOSH is "Bidirectional-streams Over Synchronous HTTP", a technology for two-way communication over the Hypertext Transfer Protocol (HTTP). BOSH emulates many of the transport primitives that are familiar from the Transmission Control Protocol (TCP). For applications that require both "push" and "pull" communications, BOSH is significantly more bandwidth-efficient and responsive than most other bidirectional HTTP-based transport protocols and the techniques known as AJAX. BOSH achieves this efficiency and low latency by avoiding HTTP polling, yet it does so without resorting to chunked HTTP responses as is done in the technique known as Comet. To date, BOSH has been used mainly as a transport for traffic exchanged between Jabber/XMPP clients and servers (e.g., to facilitate connections from web clients and from mobile clients on intermittent networks). However, BOSH is not tied solely to XMPP and can be used for other kinds of traffic, as well.


== Specifications ==
== Specifications ==
BOSH is defined in two specifications:
BOSH is defined in two specifications:
 
* [https://xmpp.org/extensions/xep-0124.html XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH)]
    * XEP-0124: Bidirectional-streams Over Synchronous HTTP
* [https://xmpp.org/extensions/xep-0206.html XEP-0206: XMPP Over BOSH]
    * XEP-0206: XMPP Over BOSH


== Implementations ==
== Implementations ==
=== Servers ===
=== Servers ===
The following XMPP servers include built-in support for BOSH:
The following XMPP servers include built-in support for BOSH:
 
* ejabberd
    * ejabberd
* Jabber XCP
    * Jabber XCP
* Openfire
    * Openfire
* Prosody
    * Prosody
* Tigase
    * Tigase


=== Connection Managers ===
=== Connection Managers ===
The following standalone XMPP connection managers can be used with a wide variety of XMPP servers:
The following standalone XMPP connection managers can be used with a wide variety of XMPP servers:
 
* Araneo
    * Araneo
* JabberHTTPBind
    * JabberHTTPBind
* Punjab
    * Punjab
* rhb
    * rhb


=== Clients ===
=== Clients ===
 
* Adium
    * Adium
* Gajim
    * Gajim
* JWChat
    * JWChat
* Pidgin
    * Pidgin
* Soashable
    * Soashable
* SparkWeb
    * SparkWeb
* Tigase Messenger
    * Tigase Messenger
* Tigase Minichat
    * Tigase Minichat


=== Libraries ===
=== Libraries ===
 
* emite (gwt)
    * emite (gwt)
* gloox (C++)
    * gloox (C++)
* JSJaC (JavaScript)
    * JSJaC (JavaScript)
* strophe (C or JavaScript)
    * strophe (C or JavaScript)
* XIFF (Flash)
    * XIFF (Flash)
* XMPP4GWT (gwt)
    * XMPP4GWT (gwt)
* xmpp4js (JavaScript)
    * xmpp4js (JavaScript)
* XMPP4R (Ruby)
    * XMPP4R (Ruby)
 
== Discussion Venues ==
 
The XMPP Standards Foundation maintains a dedicated email list ("bosh@xmpp.org") about BOSH, intended as a low-volume venue for discussion of BOSH implementation and protocol issues. As with all XSF technology lists, the bosh@xmpp.org list is open to all interested individuals.
 
    * Info page and subscription information
    * Subscribe via email
    * Discussion archives

Latest revision as of 01:42, 17 December 2020

Overview

BOSH is "Bidirectional-streams Over Synchronous HTTP", a technology for two-way communication over the Hypertext Transfer Protocol (HTTP). BOSH emulates many of the transport primitives that are familiar from the Transmission Control Protocol (TCP). For applications that require both "push" and "pull" communications, BOSH is significantly more bandwidth-efficient and responsive than most other bidirectional HTTP-based transport protocols and the techniques known as AJAX. BOSH achieves this efficiency and low latency by avoiding HTTP polling, yet it does so without resorting to chunked HTTP responses as is done in the technique known as Comet. To date, BOSH has been used mainly as a transport for traffic exchanged between XMPP clients and servers (e.g., to facilitate connections from web clients and from mobile clients on intermittent networks). However, BOSH is not tied solely to XMPP and can be used for other kinds of traffic, as well.

Specifications

BOSH is defined in two specifications:

Implementations

Servers

The following XMPP servers include built-in support for BOSH:

  • ejabberd
  • Jabber XCP
  • Openfire
  • Prosody
  • Tigase

Connection Managers

The following standalone XMPP connection managers can be used with a wide variety of XMPP servers:

  • Araneo
  • JabberHTTPBind
  • Punjab
  • rhb

Clients

  • Adium
  • Gajim
  • JWChat
  • Pidgin
  • Soashable
  • SparkWeb
  • Tigase Messenger
  • Tigase Minichat

Libraries

  • emite (gwt)
  • gloox (C++)
  • JSJaC (JavaScript)
  • strophe (C or JavaScript)
  • XIFF (Flash)
  • XMPP4GWT (gwt)
  • xmpp4js (JavaScript)
  • XMPP4R (Ruby)