feat: WS handler 接入 SessionManager,main.go 注入依赖 + 健康检查获取活跃会话数
This commit is contained in:
@@ -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 Manager(MVP 默认内存实现)
|
||||
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(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user