fix(server): suppress expected websocket close write errors
This commit is contained in:
+13
-2
@@ -214,11 +214,22 @@ func (sess *Session) writeWSFrame(mt int, msg any) error {
|
||||
}
|
||||
reason := classifyWSError(err)
|
||||
immetrics.ObserveWSWrite(frame, "error", reason, started, payloadBytes)
|
||||
logs.Err.Printf("ws: writeLoop sid=%s uid=%s frame=%s queue=%d capacity=%d reason=%s err=%v",
|
||||
sess.sid, sess.uid.UserId(), frame, len(sess.send), cap(sess.send), reason, err)
|
||||
if shouldLogWSWriteError(reason) {
|
||||
logs.Err.Printf("ws: writeLoop sid=%s uid=%s frame=%s queue=%d capacity=%d reason=%s err=%v",
|
||||
sess.sid, sess.uid.UserId(), frame, len(sess.send), cap(sess.send), reason, err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func shouldLogWSWriteError(reason string) bool {
|
||||
switch reason {
|
||||
case "close_normal", "close_going_away", "closed", "eof", "broken_pipe", "connection_reset":
|
||||
return false
|
||||
default:
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
func classifyWSError(err error) string {
|
||||
if err == nil {
|
||||
return "none"
|
||||
|
||||
Reference in New Issue
Block a user