diff --git a/main.go b/main.go index 2346705..6af38de 100644 --- a/main.go +++ b/main.go @@ -106,7 +106,9 @@ func (h *Hub) Run() { case conn := <-h.unregister: if _, ok := h.clients[conn]; ok { delete(h.clients, conn) - conn.Close() + if err := conn.Close(); err != nil { + log.Printf("WebSocket close error: %v", err) + } } case message := <-h.broadcast: for conn := range h.clients { @@ -114,7 +116,9 @@ func (h *Hub) Run() { if err != nil { log.Printf("WebSocket error: %v", err) delete(h.clients, conn) - conn.Close() + if closeErr := conn.Close(); closeErr != nil { + log.Printf("WebSocket close error: %v", closeErr) + } } } } @@ -184,7 +188,8 @@ func main() { log.Printf("Connected to NATS at %s", config.NatsURL) subjectsList := parseSubjects(config.Subjects) for _, subject := range subjectsList { - sub, err := nc.Subscribe(subject, func(msg *nats.Msg) { + subj := subject + sub, err := nc.Subscribe(subj, func(msg *nats.Msg) { message := Message{ ID: fmt.Sprintf("%d", time.Now().UnixNano()), Subject: msg.Subject, @@ -197,10 +202,14 @@ func main() { log.Printf("Received message on %s: %d bytes", msg.Subject, len(msg.Data)) }) if err != nil { - log.Fatalf("Failed to subscribe to %s: %v", subject, err) + log.Fatalf("Failed to subscribe to %s: %v", subj, err) } - log.Printf("Subscribed to: %s", subject) - defer sub.Unsubscribe() + log.Printf("Subscribed to: %s", subj) + defer func() { + if err := sub.Unsubscribe(); err != nil { + log.Printf("Failed to unsubscribe from %s: %v", subj, err) + } + }() } // Определяем путь к index.html indexPath := "index.html" @@ -229,11 +238,15 @@ func main() { } else { messages = store.GetAll() } - json.NewEncoder(w).Encode(messages) + if err := json.NewEncoder(w).Encode(messages); err != nil { + log.Printf("Failed to encode messages: %v", err) + } }) http.HandleFunc("/api/subjects", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(store.GetSubjects()) + if err := json.NewEncoder(w).Encode(store.GetSubjects()); err != nil { + log.Printf("Failed to encode subjects: %v", err) + } }) http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil)