feat: main.go 接入配置 + graceful shutdown + logger 迁移
- main.go: 接入 config.Load() 替换硬编码 :8080 - main.go: 添加 signal.NotifyContext + http.Server.Shutdown(10s drain) - main.go: 初始化 Zap 日志,prod 环境切换 Gin release 模式 - ws/handler.go: 所有 log.Printf 替换为 logger.Log 结构化日志 - 修复 .gitignore 排除规则(/server 仅匹配根目录二进制) - 新增 zap、viper 依赖
This commit is contained in:
@@ -2,7 +2,6 @@ package ws
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -11,6 +10,7 @@ import (
|
||||
"github.com/google/uuid"
|
||||
"github.com/gorilla/websocket"
|
||||
|
||||
"github.com/hhs/camtalk/internal/logger"
|
||||
"github.com/hhs/camtalk/internal/models"
|
||||
)
|
||||
|
||||
@@ -35,7 +35,7 @@ func (c *Client) sendJSON(v any) error {
|
||||
func ServeWS(c *gin.Context) {
|
||||
conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
|
||||
if err != nil {
|
||||
log.Printf("websocket upgrade failed: %v", err)
|
||||
logger.Log.Errorw("websocket upgrade failed", "error", err)
|
||||
return
|
||||
}
|
||||
defer conn.Close()
|
||||
@@ -49,7 +49,7 @@ func ServeWS(c *gin.Context) {
|
||||
SessionID: sessionID,
|
||||
ServerVersion: "0.1.0",
|
||||
})
|
||||
log.Printf("client connected: session=%s", sessionID)
|
||||
logger.Log.Infow("client connected", "session", sessionID)
|
||||
|
||||
// 心跳检测
|
||||
lastPong := time.Now()
|
||||
@@ -67,7 +67,7 @@ func ServeWS(c *gin.Context) {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
if time.Since(lastPong) > 60*time.Second {
|
||||
log.Printf("heartbeat timeout: session=%s", sessionID)
|
||||
logger.Log.Warnw("heartbeat timeout", "session", sessionID)
|
||||
conn.Close()
|
||||
return
|
||||
}
|
||||
@@ -82,7 +82,7 @@ func ServeWS(c *gin.Context) {
|
||||
_, message, err := conn.ReadMessage()
|
||||
if err != nil {
|
||||
if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseNormalClosure) {
|
||||
log.Printf("ws read error: %v", err)
|
||||
logger.Log.Warnw("ws read error", "error", err)
|
||||
}
|
||||
break
|
||||
}
|
||||
@@ -115,7 +115,7 @@ func ServeWS(c *gin.Context) {
|
||||
})
|
||||
continue
|
||||
}
|
||||
log.Printf("query received: session=%s request=%s", sessionID, msg.RequestID)
|
||||
logger.Log.Infow("query received", "session", sessionID, "request", msg.RequestID)
|
||||
// TODO: 调用 AI 编排流程(STT → LLM → TTS)
|
||||
|
||||
case "config":
|
||||
@@ -128,11 +128,11 @@ func ServeWS(c *gin.Context) {
|
||||
})
|
||||
continue
|
||||
}
|
||||
log.Printf("config update: session=%s", sessionID)
|
||||
logger.Log.Infow("config update", "session", sessionID)
|
||||
// TODO: 更新会话配置
|
||||
|
||||
case "interrupt":
|
||||
log.Printf("interrupt received: session=%s", sessionID)
|
||||
logger.Log.Infow("interrupt received", "session", sessionID)
|
||||
// TODO: 中断当前 AI 响应
|
||||
|
||||
default:
|
||||
@@ -145,5 +145,5 @@ func ServeWS(c *gin.Context) {
|
||||
}
|
||||
|
||||
close(done)
|
||||
log.Printf("client disconnected: session=%s", sessionID)
|
||||
logger.Log.Infow("client disconnected", "session", sessionID)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user