hi-server/internal/handler/app/deviceWebSocketHandler.go
shanshanzhong b0cf0c4e3c
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 7m50s
feat(handler): 添加设备WebSocket连接处理功能
新增app模块用于处理设备WebSocket连接,包括用户ID和设备号验证
2025-10-21 23:26:18 -07:00

47 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
}
}