# qqgame-cpp **Repository Path**: zyf/qqgame-cpp ## Basic Information - **Project Name**: qqgame-cpp - **Description**: QQ游戏大厅,websocket 通信协议的 C++ 实现。 - **Primary Language**: C++ - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-09 - **Last Updated**: 2022-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # qqgame-cpp QQ 游戏大厅,websocket 通信协议的 C++ 实现 ## 相关文档 本项目的是方便 QQGame 游戏大厅接入。关于接入细节和设计思路都来自于 QQ游戏的官方接入文档: * [QQGame开放平台架构](https://open.qqgame.qq.com/wiki/24/35/86/86.html) * [游戏和大厅通信协议细节](https://open.qqgame.qq.com/wiki/24/35/46/52/52.html) ## 构建库文件 1. 请在机器上安装 **Visual Studio 2019/2022** 或者更新的版本。并且安装 [vcpkg](https://github.com/microsoft/vcpkg) 2. 配置 **VCPKG_ROOT** 环境变量指向 vcpkg 项目的目录 3. 使用 **Visual Studio Code** 打开本项目,并调用 cmake 配置本项目 直接执行 **CMake: configure** 即可安装好依赖,然后根据自己的需求编译即可。 4. 如果不想使用code,使用命令行,则用如下指令构建: ```powershell cmake --no-warn-unused-cli -DVCPKG_TARGET_TRIPLET:STRING=x64-windows-static -DCMAKE_TOOLCHAIN_FILE:STRING=${env:VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE:STRING=Debug -Bbuild # 生成项目 cmake --build build # 构建目标 ``` 这是使用 vs 构建的 debug 版本,可以自行根据需要调整 CMAKE_BUILD_TYPE 宏来切换需要的构建类型。 ## 构建测试程序 ### 构建 ```powershell cmake --no-warn-unused-cli -DVCPKG_TARGET_TRIPLET:STRING=x64-windows-static -DCMAKE_TOOLCHAIN_FILE:STRING=${env:VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE:STRING=Debug -Dqqgame-cpp_BUILD_TEST=1 -Bbuild cmake --build build --config Debug --target test_qqgame-cpp ``` ### 使用内置测试服务端模拟测试 test 目录放置了一个 node 实现的模拟大厅协议的服务端 ```powershell cd test npm install # 安装测试服务器依赖 npm test # 启动测试服务器 ``` 然后通过 vscode 启动调试目标 test_qqgame-cpp 即可进行交互式协议模拟调试 ### 使用服务端指令 通过其它进程连接测试服务,可以使用一些特殊指令来模拟大厅返回给客户端的消息。
例如可以安装 node 的 webscocket 工具 wscat: `npm install -g wscat`
1. 连接服务端:`wscat -c ws://127.0.0.1:10888/websocket/township` 2. 下面的指令会广播给所有连接到服务端的客户端: * hide -> `{cmd: boss_key, show: 0}` 使用老板键隐藏窗口 * show -> `{cmd: boss_key, show: 1}` 使用老板键显示窗口 * top -> `{cmd: bring_to_top}` 前置窗口 * closevip -> `{cmd: buy_vip_close}` 购买 vip 结束 * closepay -> `{cmd: pay_close}` 购买商品结束 * closeweb -> `{cmd: web_close}` 关闭web窗口 ## 接入方法 可以根据项目形式选择 1. 使用 vcpkg 接入(推荐)待完善 2. 使用 cmake 子文件夹的形式接入 add_subdirectory(qqgame-cpp) 3. 使用动静态库的形式接入。先编译好本项目,然后将库按照你自己的需求添加链接参数(待完善动态库) ## 感谢 * websocket 功能来自于: [easywsclient](https://github.com/dhbaird/easywsclient) * json 序列化功能来自于: [jsoncpp](https://github.com/open-source-parsers/jsoncpp)