本次发布
依赖项
基于 Boost.Asio 的 C++11 HTTP 和 WebSocket
分支 | Linux / Windows | 覆盖率 | 文档 | 矩阵 |
---|---|---|---|---|
master | ||||
develop |
目录
介绍
Beast 是一个仅头文件库,通过提供低级 HTTP/1、WebSocket 和网络协议词汇类型以及使用 Boost.Asio 的一致异步模型实现的算法,作为编写可互操作网络库的基础。
该库专为
-
对称性:算法是角色无关的;可以构建客户端、服务器或两者兼有。
-
易用性:Boost.Asio 用户将立即理解 Beast。
-
灵活性:用户做出重要决定,例如缓冲区或线程管理。
-
性能:构建处理数千甚至更多连接的应用程序。
-
进一步抽象的基础。组件非常适合在此基础上进行构建。
外观
CppCon 2018 | Bishop Fox 2018 |
---|---|
![]() |
![]() |
CppCon 2017 | CppCast 2017 | CppCon 2016 |
---|---|---|
![]() |
![]() |
描述
此软件处于首次正式发布阶段。接口可能会因用户反馈而更改。有关最新更改,请参阅 更改日志。
- 官方网站
- 文档 (master 分支)
- Autobahn|Testsuite WebSocket 结果
要求
本库适用于熟悉 Boost.Asio 的程序员。希望使用异步接口的用户应该已经知道如何使用回调或协程通过并发网络程序。
- C++11:对大多数语言特性提供稳健支持。
- Boost:Boost.Asio 和 Boost 的其他部分。
- OpenSSL:使用 TLS/安全套接字以及示例/测试是必需的。
使用 Microsoft Visual C++ 时,需要 Visual Studio 2017 或更高版本。
需要以下组件之一才能构建测试和示例。
- 正确配置的 bjam/b2
- CMake 3.5.1 或更高版本 (仅限 Windows)
构建
Beast 是仅头文件库。要使用它,只需在源文件中添加所需的 #include
行,如下所示:
#include <boost/beast.hpp>
如果您使用协程,则需要链接 Boost.Coroutine 库。请访问 Boost 文档,了解如何为您的特定构建系统执行此操作。
GitHub
要使用 Beast 的最新官方版本,只需获取最新的 Boost 发行版,然后按照将其集成到开发环境的说明进行操作。如果您希望构建示例和测试,或者希望预览即将进行的更改和功能,建议克隆“Boost 超级项目”并在“项目内部”使用 Beast(即,超级项目中的 libs/beast 子目录)。
官方存储库包含以下分支:
这些分支中的每一个都需要一个相应的 Boost 分支及其所有子项目。例如,如果您想使用 Beast 的 master 分支版本,您应该克隆 Boost 超级项目,在超级项目中切换到 master 分支,并获取与该分支对应的所有 Boost 库,包括 Beast。
要本地克隆超级项目,并进入主项目目录,请使用:
git clone --recursive https://github.com/boostorg/boost.git
cd boost
"bjam" 用于构建 Beast 和 Boost 库。在非 Windows 系统上,使用此命令构建 bjam:
./bootstrap.sh
在 Windows 命令行中,使用此命令构建 bjam:
.\BOOTSTRAP.BAT
构建测试和示例
构建测试和示例需要安装 OpenSSL。如果 OpenSSL 安装在非系统位置,您需要将 user-config.jam 文件复制到您的主目录,并将 OPENSSL_ROOT
环境变量设置为包含 OpenSSL 安装的路径。
Ubuntu/Debian
如果安装到系统目录,OpenSSL 将被自动找到并使用。
sudo apt install libssl-dev
Windows
在以下代码片段中,将 path
替换为您安装 vcpkg 的路径。示例假定为 32 位构建,如果您构建 64 位版本,请将路径中的 x32-windows
替换为 x64-windows
。
- 使用 vcpkg 和 CMD
vcpkg install openssl --triplet x32-windows
SET OPENSSL_ROOT=path\installed\x32-windows
- 使用 vcpkg 和 PowerShell
vcpkg install openssl --triplet x32-windows
$env:OPENSSL_ROOT = "path\x32-windows"
- 使用 vcpkg 和 bash
vcpkg.exe install openssl --triplet x32-windows
export OPENSSL_ROOT=path/x32-windows
Mac OS
使用 brew
brew install openssl
export OPENSSL_ROOT=$(brew --prefix openssl)
# install bjam tool user specific configuration file to read OPENSSL_ROOT
# see https://www.bfgroup.xyz/b2/manual/release/index.html
cp ./libs/beast/tools/user-config.jam $HOME
确保 bjam 工具(也称为 "b2")在您的 shell 用于查找可执行文件的路径中可用。Beast 项目位于包含 Boot 超级项目的目录的“libs/beast”下。要构建 Beast 测试、示例和文档,请使用以下命令:
export PATH=$PWD:$PATH
b2 -j2 libs/beast/test cxxstd=11 # bjam must be in your $PATH
b2 -j2 libs/beast/example cxxstd=11 # "-j2" means use two processors
b2 libs/beast/doc # Doxygen and Saxon are required for this
有关配置、使用和在超级项目中构建库的更多说明,请参阅 Boost Wiki。
Visual Studio
可以使用 CMake 使用以下命令生成非常好的 Visual Studio 解决方案和一组 Visual Studio 项目文件:
cmake -G "Visual Studio 17 2022" -A win32 -B bin -DCMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE="C:/boost/libs/beast/cmake/toolchains/msvc.cmake"
cmake -G "Visual Studio 17 2022" -A x64 -B bin64 -DCMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE="C:/boost/libs/beast/cmake/toolchains/msvc.cmake"
存储库中的文件布局如下:
./
bin/ Create this to hold executables and project files
bin64/ Create this to hold 64-bit Windows executables and project files
doc/ Source code and scripts for the documentation
include/ Where the header files are located
example/ Self contained example programs
meta/ Metadata for Boost integration
test/ The unit tests for Beast
tools/ Scripts used for CI testing
用法
这些示例是完整、独立的程序,您可以自行构建和运行(它们位于 example
目录中)。
https://boost.ac.cn/doc/libs/latest/libs/beast/doc/html/beast/quick_start.html
License
根据 Boost 软件许可证 1.0 版分发。(请参阅随附的 LICENSE_1_0.txt 文件或访问 https://boost.ac.cn/LICENSE_1_0.txt)
联系方式
请在此处报告问题或疑问:https://github.com/boostorg/beast/issues
贡献(我们需要您的帮助!)
如果您想为 Beast 做出贡献并帮助我们保持高质量,请考虑对活动的拉取请求进行代码审查。用户和利益相关者的任何反馈,即使是关于工作原理或为何以某种方式完成的简单问题,都具有价值,可用于改进库。代码审查提供这些好处:
- 识别错误
- 文档校对
- 调整接口以适应用例
- 简化代码
您可以查看已关闭的拉取请求,以了解代码审查是如何进行的。要进行代码审查,只需使用您的 GitHub 帐户登录,然后在下面的任何打开的拉取请求中添加评论,不要害羞!
https://github.com/boostorg/beast/pulls
以下是一些学习代码审查的资源:
- 十大拉取请求审查错误
- 同行代码审查的最佳秘密(pdf)
- 11 条同行代码审查最佳实践(pdf)
- 代码审查清单 – 进行有效代码审查
- 代码审查指南
- C++ 核心指南
- C++ 编码标准(Sutter & Alexandrescu)
Beast 的发展离不开代码审查和来自用户及利益相关者对其接口的任何形式的反馈。即使您只是有疑问,在代码审查或问题中提问也能提供有价值的信息,可用于改进库——请不要犹豫,没有问题是不重要或不相关的!