# skynet_fly
**Repository Path**: huaa/skynet_fly
## Basic Information
- **Project Name**: skynet_fly
- **Description**: 致力于开箱即用的服务端框架
- **Primary Language**: Lua
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://huahua132.github.io/
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 5
- **Created**: 2024-01-20
- **Last Updated**: 2026-04-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

**致力于服务端对 skynet 的最佳实践**
[](https://github.com/huahua132/skynet_fly/stargazers)
[](https://github.com/huahua132/skynet_fly/network)
[](LICENSE)
[📖 使用文档](https://huahua132.github.io/2023/02/25/skynet_fly_word/word_1/A_home/) | [🎮 示例项目](https://github.com/huahua132/skynet_fly_demo) | [📚 API文档](https://huahua132.github.io/2023/12/17/skynet_fly_api/module/)
---
> 💡 **觉得不错,不妨点个 Star 吧!你的 Star 是作者持续创作维护的最大动力!**
## 📋 目录
- [社区交流](#-社区交流)
- [项目简介](#-项目简介)
- [核心特性](#-核心特性)
- [快速开始](#-快速开始)
- [编译安装](#️-编译安装)
- [第三方依赖](#-第三方依赖)
- [项目示例](#-项目示例)
---
## 💬 社区交流
**QQ 交流群:102993581**
📌 **镜像仓库**:[网络不好可以去 Gitee Clone](https://gitee.com/huaa/skynet_fly)
---
## 🎯 项目简介
**skynet_fly** 是基于 [skynet](https://github.com/cloudwu/skynet) 扩展的高性能游戏服务器框架,专注于快速开发 Web 服务、游戏服务器及需要 RPC 调用的分布式系统。
### 🏗️ 技术架构
基于 [skynet](https://github.com/huahua132/skynet.git) 自维护版本,针对服务端开发做了深度优化和扩展。
---
## ✨ 核心特性
### 🔥 热更新系统
- ✅ 支持不停服更新
- ✅ 一键生成配置文件和运维脚本
- ✅ 完善的热更新机制,确保服务平滑过渡
### 🎮 游戏开发
- ✅ Gate/WebSocket Gate 基础设施封装
- ✅ 支持 Protobuf、JSON、Sproto 多种协议
- ✅ 房间匹配系统完整实现
- ✅ 开箱即用的游戏业务框架
### 🗄️ 数据持久化
- ✅ **ORM 对象关系映射**
- 支持 MySQL、MongoDB 等多种数据库
- 数据库无缝切换
- 智能缓存策略,提升性能
- CRUD 操作简单高效
- ✅ Redis、MySQL、Timer、Log 使用封装
### 🔧 分布式支持
- ✅ 远程 RPC 调用
- ✅ 远程 Sub/Pub 消息订阅
- ✅ 远程 SubSync/PubSync 同步订阅
- ✅ 服务发现机制
### 🌐 HTTP 服务
- ✅ HTTP 长连接支持
- ✅ 路由与中间件模式
- ✅ JWT 鉴权集成
### 🛠️ 开发工具
- ✅ 内置日志分割
- ✅ 时间快进功能(测试神器)
- ✅ 断点调试支持
- ✅ Lua 代码加密
### 📹 **服务录像与重放**
- ✅ 服务行为完整录制
- ✅ 录像重放调试
- ✅ 快速定位复杂 Bug
- ✅ 自动热更记录和共享配置管理
> 📖 [详细了解热更新实现](https://huahua132.github.io/2023/06/30/skynet_fly_ss/%E5%85%B3%E4%BA%8Eskynet_fly%E7%83%AD%E6%9B%B4%E6%96%B0%E5%AE%9E%E7%8E%B0/)
> 📖 [一键构建服务配置](https://huahua132.github.io/2023/06/30/skynet_fly_ss/%E5%85%B3%E4%BA%8Eskynet_fly%E7%9A%84%E4%B8%80%E9%94%AE%E6%9E%84%E5%BB%BA%E6%9C%8D%E5%8A%A1%E9%85%8D%E7%BD%AE/)
---
## ⚡ 快速开始
### 示例 1:简单热更新服务
运行 `examples/AB_question` 示例,演示 A 服务向 B 服务发送消息并接收回应。
#### 📦 构建服务
```bash
cd examples/AB_question/
sh ../../binshell/make_server.sh ../../
```
#### ▶️ 运行服务
```bash
sh make/script/run.sh load_mods.lua 0
```
#### 📝 代码示例
**A 服务发送消息:**
```lua
function CMD.send_msg_to_b()
-- 简单轮询负载均衡
for i = 1, 4 do
local ret = container_client:instance("B_m"):balance_call("hello")
log.info("balance_call send_msg_to_b:", i, ret)
end
-- 模除映射方式(固定服务)
for i = 1, 4 do
local ret = container_client:instance("B_m"):set_mod_num(1):mod_call("hello")
log.info("mod_call send_msg_to_b:", i, ret)
end
-- 广播到所有 B_m 服务
local ret = container_client:instance("B_m"):broadcast_call("hello")
log.info("broadcast_call:", ret)
end
```
**B 服务响应:**
```lua
function CMD.hello()
return "HELLO A, I am " .. skynet.address(skynet.self())
end
```
#### 🔄 热更新测试
1. 修改 `B_m.lua` 文件
2. 执行热更新脚本:
```bash
sh make/script/check_reload.sh load_mods.lua
```
旧服务将在确认无访问者后优雅退出,新服务无缝接管请求。
---
### 示例 2:房间类游戏
运行 `examples/digitalbomb` 数字炸弹游戏示例。
#### 📦 构建并运行
```bash
cd examples/digitalbomb/
sh ../../binshell/make_server.sh ../../
sh make/script/run.sh load_mods.lua 0
```
#### 🎯 特性展示
- ✅ 基于 TCP 长连接
- ✅ 支持不停服更新
- ✅ 登录、大厅、匹配、游戏模块解耦
- ✅ 内置测试客户端
**可热更新模块:**
- `hall` - 大厅服务
- `alloc` - 分配服务
- `table` - 桌子服务
---
### 示例 3:HTTP 服务
运行 `examples/webapp` Web 应用示例。
#### 📦 构建服务
```bash
cd examples/webapp/
sh ../../binshell/make_server.sh ../../
```
生成的运维脚本:
- `run.sh` - 启动服务
- `stop.sh` - 停止服务
- `restart.sh` - 重启服务
- `reload.sh` - 热更新模块
- `check_reload.sh` - 检测并热更新
- `fasttime.sh` - 时间快进
#### ▶️ 运行服务
```bash
# 前台运行
sh make/script/run.sh load_mods.lua 0
# 后台运行
sh make/script/run.sh load_mods.lua
```
#### 🌐 访问测试
浏览器打开:`http://x.x.x.x:8688`
#### 🔄 热更新
```bash
# 1. 修改代码
vim webapp/lualib/webapp_dispatch.lua
# 2. 执行热更新
sh make/script/check_reload.sh load_mods.lua
```
---
## 🛠️ 编译安装
### Linux 环境
```bash
# 1. 克隆项目
git clone https://github.com/huahua132/skynet_fly
# 2. 安装依赖(根据系统选择)
sh install_centos.sh
# 或
sh install_ubuntu.sh
# 3. 编译
make linux
```
### Windows 环境
基于 [Visual Studio 2022](https://visualstudio.microsoft.com/zh-hans/downloads/),需要安装:
- [CMake 模块](https://learn.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio?view=msvc-170)
- [Clang 模块](https://learn.microsoft.com/en-us/cpp/build/clang-support-cmake?view=msvc-170)
**OpenSSL 配置:**
如果链接出错,请下载 [OpenSSL](https://slproweb.com/products/Win32OpenSSL.html) 完整版 MSI 安装包,替换 `win3rd/include` 和 `win3rd/lib` 目录。
> 💡 参考 [Pluto 项目](https://github.com/cloudfreexiao/pluto) 的编译方式
---
## 📦 第三方依赖
| 组件 | 版本 | 说明 |
|------|------|------|
| [skynet](https://github.com/huahua132/skynet.git) | latest | 自维护 Fork 版本 |
| [basexx](https://github.com/aiq/basexx) | 0.4.1 | Base 编码 |
| [lua-cjson](https://github.com/cloudwu/lua-cjson) | latest | JSON 解析 |
| [lua-openssl](https://github.com/zhaozg/lua-openssl) | 0.9.1-0 | OpenSSL 绑定 |
| [lua-protobuf](https://github.com/starwing/lua-protobuf) | 0.5.3 | Protobuf 支持 |
| [lua-radix-router](https://github.com/vm-001/lua-radix-router) | latest | 路由器 |
| [luafilesystem](https://github.com/lunarmodules/luafilesystem) | 1.8.0 | 文件系统 |
| [luajwtjitsi](https://github.com/jitsi/luajwtjitsi) | 3.0 | JWT(已适配 lua-openssl)|
| [lzlib](https://github.com/LuaDist/lzlib) | 0.4.3 | 压缩库 |
| [lua-zset](https://github.com/xjdrew/lua-zset) | latest | 有序集合 |
| [lua-snapshot](https://github.com/cloudwu/lua-snapshot) | latest | 快照工具 |
| [lua-socket](https://github.com/lunarmodules/luasocket) | latest | Socket 库 |
| [LuaPanda](https://github.com/Tencent/LuaPanda) | latest | 调试器 |
| [wlua](https://github.com/hanxi/wlua) | latest | Lua 工具 |
---
## 📚 项目示例
### 官方 Demo
🎮 [完整示例项目](https://github.com/huahua132/skynet_fly_demo)
### 完整项目案例
♟️ [中国象棋](https://github.com/huahua132/skynet_fly_demo) - 完整的在线对战游戏实现
---
## 🔗 扩展阅读
### 核心功能详解
- 📖 [ORM 数据映射详解](https://huahua132.github.io/2023/12/24/skynet_fly_ss/orm/)
- 对象关系映射实现
- 多数据库适配
- 缓存策略优化
- 📖 [服务录像与重放](https://huahua132.github.io/2024/10/27/skynet_fly_word/word_3/S_record/)
- 完整录制服务行为
- 精准重放调试
- Bug 快速定位
## 📄 License
本项目采用 MIT 协议开源,详见 [LICENSE](LICENSE) 文件。
---
**如果这个项目对你有帮助,请给个 ⭐ Star 支持一下!**
Made with ❤️ by [huahua132](https://github.com/huahua132)
## 🙏 贡献者
感谢所有为 skynet_fly 做出贡献的开发者!
### 核心贡献者
### 特别感谢
感谢以下贡献者提交的 Pull Request,让项目变得更好:
- 🌟 所有提交 PR 的朋友
- 🐛 提交 Issue 和 Bug 报告的朋友
- 💡 提供建议和想法的朋友
- 📖 完善文档的朋友
### 如何贡献
我们欢迎所有形式的贡献!
1. 🍴 Fork 本项目
2. 🔨 创建你的特性分支 (`git checkout -b feature/AmazingFeature`)
3. 💾 提交你的修改 (`git commit -m 'Add some AmazingFeature'`)
4. 📤 推送到分支 (`git push origin feature/AmazingFeature`)
5. 🎉 提交 Pull Request
**贡献指南:**
- 遵循项目的代码风格
- 提交前请测试你的代码
- 提供清晰的提交信息
---