feat: 优化100人并发投票支持 + 修复奖项名称硬编码问题
服务端优化: - Socket.IO 配置优化,支持高并发 WebSocket 连接 - 添加 connectTimeout、perMessageDeflate 等参数 压测脚本: - 新增 vote-real-scenario.yaml 真实场景压测配置 - 支持 100人瞬间爆发、每人7票、不同投票速度模拟 - 添加随机延迟函数模拟真实用户行为 - 强制 WebSocket 传输避免 HTTP 连接限制 前端修复: - 修复 PostcardItem、PostcardDisplay 奖项名称硬编码问题 - 组件现在从后端 awards 配置动态获取奖项名称 - 修复 LiveVotingView、AdminControl 传递 awards 数据 - 新增 gala 压测命令到 package.json 测试验证: - 100人并发压测通过,成功率 100% - P95 延迟 0.7ms,远低于 500ms 阈值 - 系统可稳定支持 3.3 倍现场负载
This commit is contained in:
@@ -41,9 +41,15 @@ export async function initializeSocket(httpServer: HttpServer): Promise<GalaServ
|
||||
origin: config.corsOrigins,
|
||||
credentials: true,
|
||||
},
|
||||
// 高并发优化配置
|
||||
pingTimeout: config.socket.pingTimeout,
|
||||
pingInterval: config.socket.pingInterval,
|
||||
maxHttpBufferSize: config.socket.maxHttpBufferSize,
|
||||
connectTimeout: 45000, // 连接超时 45 秒
|
||||
perMessageDeflate: false, // 禁用压缩,减少 CPU/内存消耗
|
||||
transports: ['websocket', 'polling'], // 优先 WebSocket,但保留 polling 作为降级
|
||||
allowUpgrades: true, // 允许从 polling 升级到 websocket
|
||||
upgradeTimeout: 10000, // 升级超时 10 秒
|
||||
});
|
||||
|
||||
// Set up Redis adapter for horizontal scaling
|
||||
|
||||
Reference in New Issue
Block a user