feat(handler): 添加设备WebSocket连接处理功能
Build docker and publish / build (20.15.1) (push) Successful in 7m50s
Build docker and publish / build (20.15.1) (push) Successful in 7m50s
新增app模块用于处理设备WebSocket连接,包括用户ID和设备号验证
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user