Add detailed peer closure logging in reader loop.

This commit is contained in:
Jay
2026-04-16 18:29:21 -04:00
parent 00c79d2170
commit 431aa4791c
2 changed files with 79 additions and 12 deletions

View File

@@ -1,6 +1,7 @@
package honeybee
import (
stderrors "errors"
"fmt"
"log/slog"
"net/url"
@@ -175,7 +176,23 @@ func (c *Connection) startReader() {
messageType, data, err := c.socket.ReadMessage()
if err != nil {
if c.logger != nil {
c.logger.Error("read error", "error", err)
var closeErr *websocket.CloseError
if stderrors.As(err, &closeErr) {
switch closeErr.Code {
case websocket.CloseNormalClosure, websocket.CloseGoingAway:
c.logger.Info("connection closed by peer",
"code", closeErr.Code,
"text", closeErr.Text,
)
default:
c.logger.Error("unexpected close",
"code", closeErr.Code,
"text", closeErr.Text,
)
}
} else {
c.logger.Error("read error", "error", err)
}
}
select {
case c.errors <- err: