在C++11中基于Boost.Asio构建的HTTP和WebSocket
| 分支机构 | Linux / Windows | 覆盖范围 | 编写文件 | 矩阵 |
|---|---|---|---|---|
| 主人 | ||||
| 开发 |
内容
简介
Beast是一个纯C++头的库,通过使用Boost.Asio的一致异步模型提供低级别的HTTP/1、WebSocket和网络协议词汇类型和算法,作为编写可互操作网络库的基础。
这个库是为以下情况设计的
-
对称性。 算法是不分角色的,可以构建客户端、服务器或两者。
-
易用性: Boost.Asio用户可以立即理解Beast。
-
灵活性。 用户可以做出重要的决定,如缓冲区或线程管理。
-
**性能。**构建处理成千上万连接的应用程序。
-
**进一步抽象的基础。**组件非常适用于构建。
说明
本软件正处于第一个正式版本。接口可能会根据用户的反馈而改变。最近的变化见CHANGELOG。
要求
这个库是为熟悉Boost.Asio的程序员准备的。希望使用异步接口的用户应该已经知道如何使用回调或coroutines来创建并发的网络程序。
- 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>
如果你使用coroutine,你需要与Boost.Coroutine库链接。请访问Boost文档,了解如何针对你的特定构建系统进行链接。
GitHub
要使用Beast的最新官方版本,只需获得最新的Boost发行版并按照说明将其集成到你的开发环境中。如果你想构建例子和测试,或者想预览即将到来的变化和功能,建议克隆 "Boost超级项目",并在 "树上"(指超级项目的libs/beast子目录)中使用Beast。
官方仓库包含以下分支。
这些分支中的每一个都需要相应的Boost分支及其所有的子项目。例如,如果你想使用Beast的主分支版本,你应该克隆Boost超级项目,切换到超级项目中的主分支,并获取该分支对应的所有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
窗口
用你安装vcpkg的路径替换下面代码段中的path 。例子假设是32位的构建,如果你构建的是64位的版本,将路径中的x32-windows 替换为x64-windows 。
- 使用vcpkg和CMD。
vcpkg install openssl --triplet x32-windows
- 使用vcpkg和PowerShell。
vcpkg install openssl
- 使用vcpkg和bash。
vcpkg.exe install openssl --triplet x32-windows
Mac OS
使用brew。
brew install openssl
确保bjam工具(也叫 "b2")在你的shell用来寻找可执行文件的路径中可用。Beast项目位于 "libs/beast "中,相对于包含Boot超级项目的目录。要构建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中找到。
视觉工作室
使用这些命令,CMake可以用来生成一个非常好的Visual Studio解决方案和一组Visual Studio项目文件。
cd libs/beast
mkdir bin
cd bin
cmake .. # for 32-bit Windows builds, or
cmake -G"Visual Studio 15 2017 Win64" .. # for 64-bit Windows builds (VS2017)
资源库中的文件是这样布局的。
./
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 目录中)。
许可证
根据Boost软件许可证1.0版发布。(参见附带的文件LICENSE_1_0.txt或拷贝在www.boost.org/LICENSE_1_0…。
贡献(我们需要你的帮助!)。
如果你想为Beast做出贡献并帮助我们保持高质量,请考虑对活跃的拉动请求进行代码审查。任何来自用户和利益相关者的反馈,即使是关于事情如何运作或为什么会以某种方式进行的简单问题,都是有价值的,可以用来改进库。代码审查提供了这些好处。
- 识别错误
- 文档校对
- 调整界面以适应使用情况
- 简化代码
你可以通过查看已关闭的拉动请求来了解如何进行审查。要进行代码审查,只需用你的GitHub账户登录,然后在下面的任何开放的拉动请求中添加评论 !
这里有一些资源可以了解更多关于代码审查的信息。
- 拉取请求审查的十大错误
- 同行代码审查的最佳秘诀 (pdf)
- 同行代码审查的11个最佳实践 (pdf)
- 代码审查核对表--为了进行有效的代码审查
- 代码审查指南
- C++核心指南
- C++ 编码标准 (Sutter & Alexandrescu)
Beast在代码审查以及来自用户和利益相关者对其界面的任何形式的反馈中茁壮成长。即使你只是有问题,在代码审查或问题中提出,也会提供有价值的信息,可以用来改进库--不要犹豫,没有问题是无足轻重或不重要的