feat(server): WebSocket 广播支持 Redis Pub/Sub 跨节点扇出(REDIS_ADDR 可选开关)

- 新增 ws.EventBus 接口与 RedisBus 实现;Hub 五类广播改为发布信封、各节点订阅后本地投递
- 单实例不设 REDIS_ADDR 保持进程内直投;Redis 不可用时自动兜底本地投递
- config 新增 REDIS_ADDR/REDIS_PASSWORD/REDIS_DB;dev compose 增加 --profile redis (6380)
- prod compose 与 .env.prod.example 增加多副本配置说明;README 更新已知边界
- 已用双实例 + 真实 Redis 实测跨节点推送;新增总线单测(含发布失败兜底),-race 通过
This commit is contained in:
yml2213
2026-09-05 14:39:56 +08:00
parent 8b9f3d710f
commit 10d2e2ed3d
11 changed files with 430 additions and 6 deletions
+6
View File
@@ -39,6 +39,12 @@ STORAGE_WEBP_QUALITY=80
GIN_MODE=release
IMAGE_TAG=latest
# ========== 跨节点 WebSocket 广播(可选)==========
# API 扩多副本时启用(需为所有 api 副本配置相同值);单实例留空即进程内广播
# REDIS_ADDR=redis:6379
# REDIS_PASSWORD=
# REDIS_DB=0
# 若使用腾讯云 COS 替代 MinIO,可去掉 compose 中 minio 服务,并设置:
# STORAGE_ENDPOINT=cos.ap-guangzhou.myqcloud.com
# STORAGE_USE_SSL=true