From 8ed65d055e3961c513c56ff3606117b10b691e2d Mon Sep 17 00:00:00 2001 From: devYuMinKim Date: Wed, 24 Apr 2024 19:03:51 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20chore:=20Update=20WebSocket=20an?= =?UTF-8?q?d=20WebRTC=20configurations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated the WebSocket error handling and improved WebRTC configuration to stabilize connections and enhance media transmission efficiency. Adjustments were made to ensure better error resilience and optimize ICE gathering process. Related issue: #80 --- main.go | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/main.go b/main.go index a362269..9dbdc72 100644 --- a/main.go +++ b/main.go @@ -376,31 +376,36 @@ func handleConnections(w http.ResponseWriter, r *http.Request) { clients[conn] = true for { - _, message, err := conn.ReadMessage() + messageType, message, err := conn.ReadMessage() if err != nil { log.Printf("error: %v", err) delete(clients, conn) break } - var msg Message - err = json.Unmarshal(message, &msg) - if err != nil { - log.Printf("error unmarshalling message: %v", err) - continue // handle the error as needed - } + if messageType == websocket.TextMessage { + var msg Message + if err = json.Unmarshal(message, &msg); err != nil { + log.Printf("error unmarshalling message: %v", err) + continue // handle the error as needed + } - switch msg.Type { - case "offer", "answer", "candidate": - var details WebRTCData - if err := json.Unmarshal(msg.Data, &details); err != nil { - log.Printf("error unmarshalling message data: %v", err) - continue // handle the error appropriately + if msg.Type == "ping" { + conn.WriteMessage(websocket.TextMessage, []byte(`{"type":"pong"}`)) + } + + switch msg.Type { + case "offer", "answer", "candidate": + var details WebRTCData + if err := json.Unmarshal(msg.Data, &details); err != nil { + log.Printf("error unmarshalling message data: %v", err) + continue // handle the error appropriately + } + // Use 'details' as needed + handleWebRTCMessage(msg, details, conn) + default: + broadcast <- msg } - // Use 'details' as needed - handleWebRTCMessage(msg, details, conn) - default: - broadcast <- msg } } }