Skip to content

feat(server): 加固联机服务端:速率限制、房间管理、结构化日志#3687

Open
zhpy2004 wants to merge 1 commit into
libnoname:mainfrom
zhpy2004:feat/server-hardening-v2
Open

feat(server): 加固联机服务端:速率限制、房间管理、结构化日志#3687
zhpy2004 wants to merge 1 commit into
libnoname:mainfrom
zhpy2004:feat/server-hardening-v2

Conversation

@zhpy2004
Copy link
Copy Markdown
Contributor

@zhpy2004 zhpy2004 commented Apr 16, 2026

PR受影响的平台

无(通用服务端代码)

诱因和背景

当前联机服务端 packages/server/src/index.ts 缺少基本的安全防护和资源管理机制:

  • 无速率限制,单个客户端可无限发送消息
  • 无消息大小校验,大消息可占用服务端内存
  • 无连接数上限,易被大量连接耗尽资源
  • 房主断开后房间内成员引用未清理
  • 空闲房间不会自动回收
  • 缺少结构化日志,排查问题困难

PR描述

对联机服务端进行全面加固,主要改动:

  • ServerConfig 可配置:端口、速率限制、房间容量等均可通过配置对象调整
  • 重构为 startServer() 函数模式:便于测试和灵活部署
  • 令牌桶速率限制:防止单个客户端消息刷屏
  • 消息大小校验:拒绝超大消息,防止内存滥用
  • Room.members 成员跟踪:房间维护连接成员集合
  • 房间容量检查:限制单房间最大人数
  • 总连接数限制:防止服务端过载
  • 空闲房间定时清理:自动回收无人房间
  • 房主断开时清理成员引用:避免悬挂引用
  • 结构化日志:统一 [Server] 前缀,关键事件均有日志输出

改动文件:

文件 说明
packages/server/src/index.ts 服务端主逻辑重构与加固
packages/server/src/index.test.ts 15 个 vitest 测试用例(新增)
packages/server/package.json 添加 vitest 开发依赖
packages/server/pnpm-lock.yaml 锁文件更新

PR测试

  • 新增 15 个 vitest 单元测试,覆盖所有新增功能:速率限制、消息大小校验、房间容量、连接数限制、空闲房间清理、房主断开清理等
  • 全部测试通过(pnpm --filter @noname/server test
  • eslint 检查通过(pnpm --filter @noname/server lint
  • prettier 格式化检查通过
  • 建议 reviewer 本地启动服务端进行实际联机测试

扩展适配

无,本次改动仅涉及服务端内部逻辑重构,对外接口(WebSocket 消息协议)保持不变。

检查清单

  • commit中没有无用信息,和没有具体内容的"bugfix"
  • 我已经进行了充足的测试,且现有的测试都已通过
  • 若我拥有PR标签权限,则已确保为该PR打上标签;若我未拥有PR标签权限且该PR仍需继续提交内容,则已确保为该PR名称打上WIP直到本PR内容全部提交
  • 如果此次PR中添加了新的武将,则我已在character/rank.js中添加对应的武将强度评级,并对双人武将/复姓武将添加name:xxx的参数
  • 如果此次PR中添加了新的语音文件,则我已在lib.translate中加入语音文件的文字台词
  • 如果此次PR涉及到新功能的添加,我已在PR描述中写入详细文档
  • 如果此次PR需要扩展跟进,我已在扩展适配中写入详细文档
  • 如果这个PR解决了一个issue,我在诱因和背景中明确链接到该issue
  • 我保证该PR中没有随意修改换行符等内容,没有制造出大量的Diff
  • 我保证该PR遵循项目中.editorconfigeslint.config.mjsprettier.config.mjs所规定的代码样式,并且已经通过prettier格式化过代码

@zhpy2004 zhpy2004 force-pushed the feat/server-hardening-v2 branch from a4b04d6 to 9609b9e Compare April 16, 2026 06:07
@zhpy2004 zhpy2004 changed the title 加固联机服务端:速率限制、房间管理、结构化日志 feat(server): 加固联机服务端:速率限制、房间管理、结构化日志 Apr 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants