feat: WS handler 接入 SessionManager,main.go 注入依赖 + 健康检查获取活跃会话数
Some checks failed
Backend CI / ci (pull_request) Failing after 15s
Frontend CI / ci (pull_request) Has been cancelled

This commit is contained in:
hhs
2026-06-13 15:31:15 +08:00
parent 26f87ce35a
commit fe4dedec71
2 changed files with 78 additions and 36 deletions

View File

@@ -12,6 +12,7 @@ import (
"github.com/hhs/camtalk/internal/config"
"github.com/hhs/camtalk/internal/logger"
"github.com/hhs/camtalk/internal/session"
"github.com/hhs/camtalk/internal/ws"
)
@@ -33,6 +34,12 @@ func main() {
"addr", cfg.Server.Addr(),
)
// 初始化 Session ManagerMVP 默认内存实现)
var sessionMgr session.Manager
// TODO: 当 Redis 配置非空时切换为 RedisManager
sessionMgr = session.NewMemoryManager(30*time.Minute, 20)
defer sessionMgr.(*session.MemoryManager).Stop()
// Gin 模式
if cfg.App.Env == "prod" {
gin.SetMode(gin.ReleaseMode)
@@ -44,11 +51,11 @@ func main() {
// REST API
api := r.Group("/api")
{
api.GET("/health", healthHandler)
api.GET("/health", healthHandler(sessionMgr))
}
// WebSocket
r.GET("/ws", ws.ServeWS)
r.GET("/ws", ws.ServeWS(sessionMgr))
// HTTP Server
srv := &http.Server{
@@ -82,11 +89,13 @@ func main() {
}
// healthHandler 健康检查。
func healthHandler(c *gin.Context) {
c.JSON(200, gin.H{
"status": "ok",
"version": "0.1.0",
"uptime": time.Since(startTime).String(),
"active_sessions": 0, // TODO: 接入 Session Manager
})
func healthHandler(sessionMgr session.Manager) gin.HandlerFunc {
return func(c *gin.Context) {
c.JSON(200, gin.H{
"status": "ok",
"version": "0.1.0",
"uptime": time.Since(startTime).String(),
"active_sessions": sessionMgr.ActiveCount(),
})
}
}