1. 完善websocket通信逻辑
2. 实现Switch接口
This commit is contained in:
@@ -13,13 +13,15 @@ import (
|
||||
type Controller struct {
|
||||
websocketService *service.WebSocketService
|
||||
logger *logs.Logger
|
||||
service *service.WebSocketService
|
||||
}
|
||||
|
||||
// NewController 创建远程控制控制器实例
|
||||
func NewController(websocketService *service.WebSocketService) *Controller {
|
||||
func NewController(websocketService *service.WebSocketService, service *service.WebSocketService) *Controller {
|
||||
return &Controller{
|
||||
websocketService: websocketService,
|
||||
logger: logs.NewLogger(),
|
||||
service: service,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,9 +34,17 @@ type SendCommandRequest struct {
|
||||
|
||||
// SendCommandResponseData 发送指令响应数据结构体
|
||||
type SendCommandResponseData struct {
|
||||
DeviceID string `json:"device_id"`
|
||||
Command string `json:"command"`
|
||||
Status string `json:"status"`
|
||||
DeviceID string `json:"device_id"`
|
||||
Command string `json:"command"`
|
||||
Status string `json:"status"`
|
||||
Data interface{} `json:"data,omitempty"`
|
||||
}
|
||||
|
||||
// RelayCommandData 发送到中继设备的命令数据结构体
|
||||
type RelayCommandData struct {
|
||||
DeviceID string `json:"device_id"`
|
||||
Command string `json:"command"`
|
||||
Data interface{} `json:"data,omitempty"`
|
||||
}
|
||||
|
||||
// SendCommand 向设备发送指令接口
|
||||
@@ -54,7 +64,14 @@ func (c *Controller) SendCommand(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
// 通过WebSocket服务向设备发送指令
|
||||
err := c.websocketService.SendCommand(req.DeviceID, req.Command, req.Data)
|
||||
commandData := RelayCommandData{
|
||||
DeviceID: req.DeviceID,
|
||||
Command: req.Command,
|
||||
Data: req.Data,
|
||||
}
|
||||
|
||||
// 发送指令并等待响应
|
||||
response, err := c.websocketService.SendCommandAndWait(req.DeviceID, req.Command, commandData, 0)
|
||||
if err != nil {
|
||||
c.logger.Error("发送指令失败: " + err.Error())
|
||||
controller.SendErrorResponse(ctx, controller.InternalServerErrorCode, "发送指令失败: "+err.Error())
|
||||
@@ -65,6 +82,7 @@ func (c *Controller) SendCommand(ctx *gin.Context) {
|
||||
DeviceID: req.DeviceID,
|
||||
Command: req.Command,
|
||||
Status: "sent",
|
||||
Data: response.Data,
|
||||
}
|
||||
|
||||
controller.SendSuccessResponse(ctx, "指令发送成功", data)
|
||||
|
||||
Reference in New Issue
Block a user