一、类库介绍WebSocket++只是一个头库,实现了RFC6455的WebSocket协议。它可用于编写基于C++语言的客户端应用程序和服务器端应用程序。该库依赖于Asio库,可以在boost中包含asio库,也可以包含独立的asio库。主要特性完全支持RFC6455部分支持Hixie76/Hybi00基于消息、基于事件的接口支持安全WebSockets(TLS)、IP6和显式代理灵活的依赖管理(C++11标准库或Boost)可移植、跨平台(Posix/Windows,32/64bit,Intel/ARM/PPC)二、类库下载WebSocket++下载地址https://github.com/zaphoyd/we...Boost1.69.0下载(与Asio任选其一)https://www.boost.org/users/h...Asio独立库(Boost任选其一)http://www.think-async.com3.编译工程个人觉得没必要编译整个项目。编译项目主要是为了展示项目的完整性。如果你只是专注于搭建自己的开发环境,可以跳过本章,直接参考“创建自定义项目”。3.1准备编译环境#安装工程构建工具和C++编译器$sudoaptinstallcmakesconsg++-y#安装openssl开发库$sudoaptinstalllibssl-dev#编译boost库$./bootstrap.sh$./b23.2方法一:通过cmake编译#导出环境变量(boost路径根据自己情况设置)$exportBOOST_ROOT="/home/sprite/Library/boost_1_69_0"#通过cmake编译所有工程(位于主目录下)ofWebSocketpp)$mkdirbuild&&cdbuild$cmake-DBUILD_EXAMPLES=ON-DBUILD_TESTS=ON..$make3.3方法二:通过scons编译#导出环境变量(boost路径根据自己情况设置)$exportBOOST_ROOT="/home/sprite/Library/boost_1_69_0"#通过scons编译所有项目(位于WebSocketpp主目录下)$scons3.4编译说明项目支持两种构建方式,cmake和scons,任选其一。无论是基于cmake还是scons,都是基于Boost库,需要通过BOOST_ROOT环境变量指定Boost库路径。项目中的examples、test、tutorials子项目不能单独编译,因为项目的构建体系是按照整体构建来设计的。创建自己的项目时,可以直接使用独立的asio库,不依赖boost库,也不需要指定BOOST_ROOT环境变量。4.创建自定义项目。CMake的项目组织和构建方法这里不再赘述。请参考我之前的CMake系列文章。本示例工程只有两个文件(CMakeLists.txt、server.cpp),实现了最简单的服务端信息回显功能。开发者可以通过http://www.websocket-test.com/网站填写自己主机服务器的URI进行测试。4.1项目文件CMakeLists.txt#需要cmake的最低版本cmake_minimum_required(VERSION3.1)#项目名称project(server)#启用C++11add_definitions(-std=c++11)#使用独立的Asioadd_definitions(-DASIO_STANDALONE)#Asio库根目录set(ASIO_ROOT"/home/sprite/Library/asio_1.12.2")#WebSocket++头文件目录set(WEBSOCKET_INCLUDE"/home/sprite/websocket/websocketpp-master")#生成可执行程序add_executable(${PROJECT_NAME}server.cpp)#头文件搜索路径target_include_directories(${PROJECT_NAME}PUBLIC${ASIO_ROOT}/include${WEBSOCKET_INCLUDE})#链接库文件(安全连接需要链接sslcrypto)target_link_libraries(${PROJECT_NAME}pthread)server.cpp#include
