|
@@ -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 {}
|
|
|
}
|