package app import ( "strconv" "github.com/gin-gonic/gin" "github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/pkg/logger" "github.com/perfect-panel/server/pkg/result" ) // Device WebSocket Handler func DeviceWebSocketHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) { return func(c *gin.Context) { // 获取用户ID userIDStr := c.Param("userid") userID, err := strconv.ParseInt(userIDStr, 10, 64) if err != nil { logger.WithContext(c.Request.Context()).Error("[DeviceWebSocketHandler] Invalid user ID", logger.Field("userid", userIDStr), logger.Field("error", err.Error())) result.ParamErrorResult(c, err) return } // 获取设备号 deviceNumber := c.Param("device_number") if deviceNumber == "" { logger.WithContext(c.Request.Context()).Error("[DeviceWebSocketHandler] Device number is required") result.ParamErrorResult(c, nil) return } // 获取Authorization header作为session authorization := c.GetHeader("Authorization") if authorization == "" { logger.WithContext(c.Request.Context()).Error("[DeviceWebSocketHandler] Authorization header is required") result.ParamErrorResult(c, nil) return } // 获取最大设备数量配置,默认为3 maxDevices := 3 // 使用设备管理器添加设备 svcCtx.DeviceManager.AddDevice(c.Writer, c.Request, authorization, userID, deviceNumber, maxDevices) } }