From bbdd10a3fc302298259730cf793c226bf86975f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20G=C3=A9linas?= <60028306+LEX0RE@users.noreply.github.com> Date: Wed, 24 Jun 2026 12:39:14 -0400 Subject: [PATCH 1/2] Improve error handling for websocket messages Handle websocket read errors with connection state check. --- psynetrpc.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/psynetrpc.go b/psynetrpc.go index b2e0140..2515ebc 100644 --- a/psynetrpc.go +++ b/psynetrpc.go @@ -199,8 +199,16 @@ func (p *PsyNetRPC) readMessages() { for { _, message, err := p.wsConn.ReadMessage() if err != nil { - p.logger.Error("failed to read websocket message", slog.Any("err", err)) - break + p.mu.Lock() + expected := !p.connected + p.mu.Unlock() + + if expected { + p.logger.Debug("websocket closed normally", slog.Any("err", err)) + } else { + p.logger.Error("failed to read websocket message", slog.Any("err", err)) + } + break } if strings.HasPrefix(string(message), "PsyPong:") { From 824d8723175b4323f21987f8bff81aa3428dd719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20G=C3=A9linas?= Date: Wed, 24 Jun 2026 18:22:01 -0400 Subject: [PATCH 2/2] Apply suggestion --- psynetrpc.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/psynetrpc.go b/psynetrpc.go index 2515ebc..56c116b 100644 --- a/psynetrpc.go +++ b/psynetrpc.go @@ -3,8 +3,10 @@ package rlapi import ( "context" "encoding/json" + "errors" "fmt" "log/slog" + "net" "strings" "sync" "time" @@ -199,16 +201,12 @@ func (p *PsyNetRPC) readMessages() { for { _, message, err := p.wsConn.ReadMessage() if err != nil { - p.mu.Lock() - expected := !p.connected - p.mu.Unlock() - - if expected { - p.logger.Debug("websocket closed normally", slog.Any("err", err)) - } else { - p.logger.Error("failed to read websocket message", slog.Any("err", err)) - } - break + if errors.Is(err, net.ErrClosed) { + p.logger.Debug("websocket closed", slog.Any("err", err)) + } else { + p.logger.Error("failed to read websocket message", slog.Any("err", err)) + } + break } if strings.HasPrefix(string(message), "PsyPong:") {