diff --git a/apps/visual/api/visual_screen.go b/apps/visual/api/visual_screen.go index 743fe1b..89c0abf 100644 --- a/apps/visual/api/visual_screen.go +++ b/apps/visual/api/visual_screen.go @@ -6,7 +6,6 @@ package api // 生成人:panda // ========================================================================== import ( - "github.com/XM-GO/PandaKit/biz" "github.com/XM-GO/PandaKit/model" "github.com/XM-GO/PandaKit/restfulx" "github.com/emicklei/go-restful/v3" @@ -82,10 +81,13 @@ func (p *VisualScreenApi) UpdateScreenStatus(rc *restfulx.ReqCtx) { func (p *VisualScreenApi) ScreenTwin(request *restful.Request, response *restful.Response) { screenId := request.QueryParameter("screenId") - biz.IsTrue(screenId != "", "请传组态Id") + if screenId == "" { + restfulx.ErrorRes(response, "请传组态Id") + return + } newWebsocket, err := pxSocket.NewWebsocket(response.ResponseWriter, request.Request, nil) - biz.ErrIsNil(err, "创建Websocket失败") if err != nil { + restfulx.ErrorRes(response, "创建Websocket失败") return } pxSocket.AddWebSocketByScreenId(screenId, newWebsocket) @@ -95,8 +97,7 @@ func (p *VisualScreenApi) ScreenTwin(request *restful.Request, response *restful if err != nil { return } - pxSocket.OnMessage(string(message)) + pxSocket.OnMessage(newWebsocket, string(message)) } - }() } diff --git a/pkg/websocket/socket_server.go b/pkg/websocket/socket_server.go index d4b8b4d..8df60d9 100644 --- a/pkg/websocket/socket_server.go +++ b/pkg/websocket/socket_server.go @@ -37,8 +37,11 @@ func NewWebsocket(writer http.ResponseWriter, r *http.Request, header http.Heade // OnMessage 消息 //发送消息消息类型 01:发送的设备数据 02:收到指令回复 03: 心跳回复 -func OnMessage(message string) { +func OnMessage(ws *Websocket, message string) { log.Println(message) + if message != "" && strings.Index(message, "ONLINE") != -1 { + AddWebSocketByScreenId(strings.Split(message, "ONLINE")[0], ws) + } //画布离开 if message != "" && strings.Index(message, "LEAVE") != -1 { RemoveWebSocket(strings.Split(message, "LEAVE")[0]) @@ -58,8 +61,13 @@ func OnMessage(message string) { sendMessages("02", "'命令发送成功'", screenId) } //心跳处理 - if message != "" && strings.Index(message, "ping") != -1 { - sendMessages("03", "'心跳正常'", "") + if message != "" && strings.Index(message, "HEARTCMD") != -1 { + split := strings.Split(message, "HEARTCMD") + if len(split) < 1 { + return + } + screenId := split[0] + sendMessages("03", "'心跳正常'", screenId) } }