Jump to content

BOSH (protocol): Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m Disambiguate TCP to Transmission Control Protocol using popups
Importing Wikidata short description: "Transport protocol"
 
(48 intermediate revisions by 37 users not shown)
Line 1: Line 1:
{{Short description|Transport protocol}}
{{inline|article|date=June 2008}}
{{Multiple issues|
{{onesource|article|date=June 2008}}
{{No footnotes|article|date=June 2008}}
'''Bidirectional-streams Over Synchronous HTTP (BOSH)''' is a [[transport protocol]] that emulates a bidirectional stream between two entities (such as a [[Client-server|client and a server]]) by using multiple [[Synchronization|synchronous]] [[HTTP]] request/response pairs without requiring the use of [[Polling (computer science) |polling]] or [[Asynchronous_communication|asynchronous]] chunking.
{{One source|article|date=June 2008}}
}}


'''Bidirectional-streams Over Synchronous HTTP''' ('''BOSH''') is a [[transport protocol]] that emulates a bidirectional stream between two entities (such as [[Client–server model|a client and a server]]) by using multiple [[Synchronization|synchronous]] [[Hypertext Transfer Protocol|HTTP]] request/response pairs without requiring the use of [[Polling (computer science)|polling]] or [[Asynchronous communication|asynchronous]] chunking.
It is a draft standard of the [[XMPP Standards Foundation]].


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 [[AJAX]]. BOSH achieves this by avoiding HTTP polling, yet it does so without resorting to chunked HTTP responses as is done in the technique known as [[Comet (programming)|Comet]]. To date, BOSH has been used mainly as a transport for traffic exchanged between [[XMPP|Jabber/XMPP]] clients and servers (e.g., to facilitate connections from web clients and from mobile clients on intermittent networks).
The related standard '''XMPP Over BOSH''' defines how BOSH may be used to transport [[XMPP]] stanzas. The result is an HTTP binding for XMPP communications that is intended to be used in situations where a device or client is unable to maintain a long-lived [[Transmission Control Protocol|TCP connection]] to an XMPP server.

For "push", a BOSH client starts an HTTP request, but the server postpones sending a reply until it has data to send.<ref>[http://xmpp.org/extensions/xep-0124.html XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH)]</ref> After receiving a reply, the client immediately makes another request on the same HTTP connection, so the server can always send data to the client without waiting for the client to poll. If, while waiting for a reply, the client needs to send data to the server, it opens a second HTTP connection. There are at most two HTTP connections open at a time, one on which the server can send data as a reply and one on which the client can send data as a POST.

"Bidirectional-streams Over Synchronous HTTP (BOSH)" and "XMPP over BOSH" are stable standards of the [[XMPP Standards Foundation]].

The second related standard '''XMPP Over BOSH (XEP-0206)''' defines how BOSH may be used to transport [[Extensible Messaging and Presence Protocol|XMPP]] stanzas. The result is an HTTP binding for XMPP communications that is intended to be used in situations where a device or client is unable to maintain a long-lived [[Transmission Control Protocol|TCP connection]] to an XMPP server.


== See also ==
== See also ==

*[[Push technology]]
*[[List of BOSH software]]
* [[Push technology]]
* [[WebSocket]]

== Notes ==
{{Reflist}}


== References ==
== References ==
* [http://www.xmpp.org/extensions/xep-0124.html XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH)]
* [https://xmpp.org/extensions/xep-0124.html XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH)]
* [http://www.xmpp.org/extensions/xep-0206.html XEP-0206: XMPP Over BOSH]
* [https://xmpp.org/extensions/xep-0206.html XEP-0206: XMPP Over BOSH]
* [https://xmpp.org/about/technology-overview/#bosh BOSH overview]


[[Category:Web 2.0 neologisms]]
[[Category:Web 2.0 neologisms]]
[[Category:XMPP]]
[[Category:Hypertext Transfer Protocol]]


{{compu-network-stub}}
{{compu-network-stub}}

Latest revision as of 22:22, 2 February 2024

Bidirectional-streams Over Synchronous HTTP (BOSH) is a transport protocol that emulates a bidirectional stream between two entities (such as a client and a server) by using multiple synchronous HTTP request/response pairs without requiring the use of polling or asynchronous chunking.

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 AJAX. BOSH achieves this 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).

For "push", a BOSH client starts an HTTP request, but the server postpones sending a reply until it has data to send.[1] After receiving a reply, the client immediately makes another request on the same HTTP connection, so the server can always send data to the client without waiting for the client to poll. If, while waiting for a reply, the client needs to send data to the server, it opens a second HTTP connection. There are at most two HTTP connections open at a time, one on which the server can send data as a reply and one on which the client can send data as a POST.

"Bidirectional-streams Over Synchronous HTTP (BOSH)" and "XMPP over BOSH" are stable standards of the XMPP Standards Foundation.

The second related standard XMPP Over BOSH (XEP-0206) defines how BOSH may be used to transport XMPP stanzas. The result is an HTTP binding for XMPP communications that is intended to be used in situations where a device or client is unable to maintain a long-lived TCP connection to an XMPP server.

See also

[edit]

Notes

[edit]

References

[edit]