HeWang vor 7 Monaten
Ursprung
Commit
bd7176f3d9
2 geänderte Dateien mit 93 neuen und 9 gelöschten Zeilen
  1. 3 1
      aarch64/pjibot_guide/control/main.go
  2. 90 8
      tools/pji_api/main/main.go

+ 3 - 1
aarch64/pjibot_guide/control/main.go

@@ -69,7 +69,7 @@ func judgeState1() {
 			if lastStatus == "NONE" && status == "NONE" {
 				continue
 			}
-			// 3 发送rpc信号杀死采集程序
+
 			if lastStatus == "NONE" && status == "CHANGE" {
 				if _, err := util.ExecuteWithPath(commonConfig.LocalConfig.RestartCmd.Dir, commonConfig.LocalConfig.RestartCmd.Name, commonConfig.LocalConfig.RestartCmd.Args...); err != nil {
 					c_log.GlobalLogger.Info("启动新程序失败,【path】=", commonConfig.LocalConfig.RestartCmd.Dir, "【cmd】=", commonConfig.LocalConfig.RestartCmd.Name, commonConfig.LocalConfig.RestartCmd.Args, ":", err)
@@ -81,6 +81,8 @@ func judgeState1() {
 				commonConfig.InitPlatformConfig()
 				continue
 			}
+
+			// 3 发送rpc信号杀死采集程序
 			var killArgs commonService.KillSignal
 			if lastStatus == "UN_CHANGE" && status == "CHANGE" {
 				killArgs = commonService.KillSignal{NodeName: "master", DropUploadData: commonConfig.PlatformConfig.DropUploadData, Restart: true}

+ 90 - 8
tools/pji_api/main/main.go

@@ -78,20 +78,102 @@ func SendWebsocketRequest(serverURL, path string, request Request) (string, erro
 	return response.Results["sn"], nil
 }
 
+//// SendWebsocketRequest 发送WebSocket请求并返回sn字段的值
+//func SendWebsocketRequest(serverURL, path string, request Request) (string, error) {
+//	// 构建WebSocket连接URL
+//	u := url.URL{Scheme: "ws", Host: serverURL, Path: path}
+//
+//	// 创建一个Dialer实例,用于建立WebSocket连接
+//	dialer := websocket.Dialer{
+//		ReadBufferSize:  1024,
+//		WriteBufferSize: 1024,
+//		// 可选:设置超时等
+//		HandshakeTimeout: 5 * time.Second,
+//	}
+//
+//	// 建立WebSocket连接
+//	conn, _, err := dialer.Dial(u.String(), nil)
+//	if err != nil {
+//		return "", fmt.Errorf("dial: %w", err)
+//	}
+//	defer conn.Close()
+//
+//	// 将请求JSON编码为字节
+//	requestJSON, err := json.Marshal(request)
+//	if err != nil {
+//		return "", fmt.Errorf("marshal request: %w", err)
+//	}
+//
+//	// 发送WebSocket消息
+//	err = conn.WriteMessage(websocket.TextMessage, requestJSON)
+//	if err != nil {
+//		return "", fmt.Errorf("write: %w", err)
+//	}
+//
+//	// 读取WebSocket响应
+//	_, responseBytes, err := conn.ReadMessage()
+//	if err != nil {
+//		return "", fmt.Errorf("read: %w", err)
+//	}
+//
+//	// 将响应字节解码为JSON
+//	var response Response
+//	err = json.Unmarshal(responseBytes, &response)
+//	if err != nil {
+//		return "", fmt.Errorf("unmarshal response: %w", err)
+//	}
+//
+//	// 返回sn字段的值
+//	return response.Results["sn"], nil
+//}
+
+func receiveHandler(connection *websocket.Conn) {
+	for {
+		_, msg, err := connection.ReadMessage()
+		if err != nil {
+			log.Println("Error in receive:", err)
+			return
+		}
+		log.Printf("Received: %s\n", msg)
+	}
+}
+
 func main() {
 	// 示例使用
 	serverURL := "192.168.1.104:9002"
 	path := "/"
-	request := Request{
-		Type:      "request",
-		UUID:      "",
-		CommandID: "getRobotBaseInfo",
-		Parameter: nil,
+	//request := Request{
+	//	Type:      "request",
+	//	UUID:      "",
+	//	CommandID: "getRobotBaseInfo",
+	//	Parameter: nil,
+	//}
+
+	//sn, err := SendWebsocketRequest(serverURL, path, request)
+	//if err != nil {
+	//	log.Fatal(err)
+	//}
+	//log.Printf("SN: %s", sn)
+
+	// 构建WebSocket连接URL
+	u := url.URL{Scheme: "ws", Host: serverURL, Path: path}
+
+	// 创建一个Dialer实例,用于建立WebSocket连接
+	dialer := websocket.Dialer{
+		ReadBufferSize:  1024,
+		WriteBufferSize: 1024,
+		// 可选:设置超时等
+		HandshakeTimeout: 5 * time.Second,
 	}
 
-	sn, err := SendWebsocketRequest(serverURL, path, request)
+	// 建立WebSocket连接
+	conn, _, err := dialer.Dial(u.String(), nil)
 	if err != nil {
-		log.Fatal(err)
+		fmt.Println("err:", err)
 	}
-	log.Printf("SN: %s", sn)
+	defer conn.Close()
+
+	go receiveHandler(conn)
+
+	select {}
 }