2017-05-28 19:49:41 -07:00
|
|
|
[/
|
2017-07-28 19:32:33 -07:00
|
|
|
Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
|
2017-05-28 19:49:41 -07:00
|
|
|
|
|
|
|
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
|
|
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
2017-07-28 19:32:33 -07:00
|
|
|
|
|
|
|
|
Official repository: https://github.com/boostorg/beast
|
2017-05-28 19:49:41 -07:00
|
|
|
]
|
|
|
|
|
|
2017-07-09 20:09:30 -07:00
|
|
|
[section Introduction]
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-12 05:01:24 -07:00
|
|
|
Beast is a C++ header-only library serving as a foundation for writing
|
|
|
|
|
interoperable networking libraries by providing [*low-level HTTP/1,
|
|
|
|
|
WebSocket, and networking protocol] vocabulary types and algorithms
|
|
|
|
|
using the consistent asynchronous model of __Asio__.
|
2017-06-04 17:25:55 -07:00
|
|
|
|
2017-06-07 16:30:49 -07:00
|
|
|
This library is designed for:
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-11 09:59:13 -07:00
|
|
|
* [*Symmetry:] Algorithms are role-agnostic; build clients, servers, or both.
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-07 16:30:49 -07:00
|
|
|
* [*Ease of Use:] __Asio__ users will immediately understand Beast.
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-07 16:30:49 -07:00
|
|
|
* [*Flexibility:] Users make the important decisions such as buffer or
|
2017-05-28 19:49:41 -07:00
|
|
|
thread management.
|
|
|
|
|
|
2017-06-07 16:30:49 -07:00
|
|
|
* [*Performance:] Build applications handling thousands of connections or more.
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-11 09:59:13 -07:00
|
|
|
* [*Basis for Further Abstraction.] Components are well-suited for building upon.
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-12 05:01:24 -07:00
|
|
|
Beast is not an HTTP client or HTTP server, but it can be used to build
|
|
|
|
|
those things.
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-07 16:30:49 -07:00
|
|
|
[heading Motivation]
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-12 05:01:24 -07:00
|
|
|
Beast empowers users to create their own libraries, clients, and servers
|
|
|
|
|
using HTTP/1 and WebSocket. Code will be easier and faster to implement,
|
|
|
|
|
understand, and maintain, because Beast takes care of the low-level
|
|
|
|
|
protocol details.
|
2017-06-07 16:30:49 -07:00
|
|
|
The HTTP and WebSocket protocols drive most of the World Wide Web.
|
|
|
|
|
Every web browser implements these protocols to load webpages and
|
|
|
|
|
to enable client side programs (often written in JavaScript) to
|
|
|
|
|
communicate interactively. C++ benefits greatly from having a
|
|
|
|
|
standardized implementation of these protocols.
|
|
|
|
|
|
|
|
|
|
[heading Requirements]
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-12 19:16:39 -07:00
|
|
|
[important
|
|
|
|
|
This library is for programmers familiar with __Asio__. Users who
|
|
|
|
|
wish to use asynchronous interfaces should already know how to
|
|
|
|
|
create concurrent network programs using callbacks or coroutines.
|
|
|
|
|
]
|
2017-06-12 05:01:24 -07:00
|
|
|
|
2017-06-07 16:30:49 -07:00
|
|
|
Beast requires:
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-07 16:30:49 -07:00
|
|
|
* [*C++11:] Robust support for most language features.
|
2017-06-12 05:01:24 -07:00
|
|
|
* [*Boost:] Beast only works with Boost, not stand-alone Asio
|
2017-06-07 16:30:49 -07:00
|
|
|
* [*OpenSSL:] Optional, for using TLS/Secure sockets.
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-12 05:01:24 -07:00
|
|
|
Supported compilers: msvc-14+, gcc 4.8+, clang 3.6+
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-07-24 13:24:15 -07:00
|
|
|
Sources are [*header-only].
|
|
|
|
|
To link a program using Beast successfully, add the
|
2017-06-07 16:30:49 -07:00
|
|
|
[@http://www.boost.org/libs/system/doc/reference.html Boost.System]
|
2017-07-24 13:24:15 -07:00
|
|
|
library to your build scripts. If you use coroutines you'll also need the
|
2017-06-07 16:30:49 -07:00
|
|
|
[@http://www.boost.org/libs/coroutine/doc/html/index.html Boost.Coroutine]
|
|
|
|
|
library. Please visit the
|
|
|
|
|
[@http://www.boost.org/doc/ Boost documentation]
|
|
|
|
|
for instructions on how to do this for your particular build system.
|
|
|
|
|
|
2017-05-28 19:49:41 -07:00
|
|
|
[heading Credits]
|
|
|
|
|
|
|
|
|
|
Boost.Asio is the inspiration behind which all of the interfaces and
|
|
|
|
|
implementation strategies are built. Some parts of the documentation are
|
|
|
|
|
written to closely resemble the wording and presentation of Boost.Asio
|
2017-06-07 16:30:49 -07:00
|
|
|
documentation. Credit goes to
|
|
|
|
|
[@https://github.com/chriskohlhoff Christopher Kohlhoff]
|
|
|
|
|
for his wonderful Asio library and the ideas in __N4588__ which power Beast.
|
2017-05-28 19:49:41 -07:00
|
|
|
|
2017-06-04 17:25:55 -07:00
|
|
|
Beast would not be possible without the support of
|
|
|
|
|
[@https://www.ripple.com Ripple]
|
|
|
|
|
during the library's early development, or the ideas, time and patience
|
2017-05-28 19:49:41 -07:00
|
|
|
contributed by
|
2017-06-04 17:25:55 -07:00
|
|
|
[@https://github.com/JoelKatz David Schwartz],
|
|
|
|
|
[@https://github.com/ximinez Edward Hennis],
|
2017-05-28 19:49:41 -07:00
|
|
|
[@https://github.com/howardhinnant Howard Hinnant],
|
2017-06-04 17:25:55 -07:00
|
|
|
[@https://github.com/miguelportilla Miguel Portilla],
|
|
|
|
|
[@https://github.com/nbougalis Nik Bougalis],
|
2017-08-01 20:33:50 -07:00
|
|
|
[@https://github.com/seelabs Scott Determan] and
|
|
|
|
|
[@https://github.com/scottschurr Scott Schurr].
|
2017-06-04 17:25:55 -07:00
|
|
|
Many thanks to
|
|
|
|
|
[@https://github.com/K-ballo Agustín Bergé],
|
2017-06-03 18:40:28 -07:00
|
|
|
[@http://www.boost.org/users/people/glen_fernandes.html Glen Fernandes],
|
2017-05-28 19:49:41 -07:00
|
|
|
and
|
2017-06-07 16:30:49 -07:00
|
|
|
[@https://github.com/pdimov Peter Dimov]
|
2017-06-04 17:25:55 -07:00
|
|
|
for tirelessly answering questions on
|
|
|
|
|
[@https://cpplang.slack.com/ Cpplang-Slack].
|
2017-05-28 19:49:41 -07:00
|
|
|
|
|
|
|
|
[endsect]
|
2017-10-26 11:08:24 -07:00
|
|
|
|
|
|
|
|
[section Reports]
|
|
|
|
|
[block'''<?dbhtml stop-chunking?>''']
|
|
|
|
|
|
|
|
|
|
[section WebSocket]
|
|
|
|
|
|
|
|
|
|
The Autobahn|Testsuite provides a fully automated test suite to
|
|
|
|
|
verify client and server implementations of The WebSocket Protocol
|
|
|
|
|
for specification conformance and implementation robustness.
|
|
|
|
|
The test suite will check an implementation by doing basic
|
|
|
|
|
WebSocket conversations, extensive protocol compliance
|
|
|
|
|
verification and performance and limits testing.
|
|
|
|
|
Autobahn|Testsuite is used across the industry and
|
|
|
|
|
contains over 500 test cases.
|
|
|
|
|
|
|
|
|
|
[@https://vinniefalco.github.io/boost/beast/reports/autobahn/index.html Autobahn|Testsuite WebSocket Results]
|
|
|
|
|
|
|
|
|
|
[warning
|
|
|
|
|
Version 0.7.6 of
|
|
|
|
|
[@https://github.com/crossbario/autobahn-testsuite Autobahn WebSockets Testsuite]
|
|
|
|
|
contains a
|
|
|
|
|
[@https://github.com/crossbario/autobahn-testsuite/issues/77 known defect]
|
|
|
|
|
which causes false positives for the following test cases:
|
|
|
|
|
{ 12.4.5, 12.4.6, 12.4.8, 12.4.9, 12.4.10, 12.4.11, 12.4.13,
|
|
|
|
|
12.4.14, 12.4.15, 12.4.16, 12.4.17, 12.4.18 }
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[endsect]
|
|
|
|
|
|
|
|
|
|
[endsect]
|