feat(ws): release generic WebSocket client and server v0.31.0-preview
This commit is contained in:
48
ws/errors.go
Normal file
48
ws/errors.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package ws
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrClosed = errors.New("ws: session closed")
|
||||
ErrNotConnected = errors.New("ws: not connected")
|
||||
ErrQueueFull = errors.New("ws: queue full")
|
||||
ErrMessageTooLarge = errors.New("ws: message too large")
|
||||
ErrUnsupportedTransport = errors.New("ws: transport does not support websocket upgrade")
|
||||
ErrServerClosed = errors.New("ws: server closed")
|
||||
ErrInvalidMessage = errors.New("ws: invalid message")
|
||||
)
|
||||
|
||||
// CloseError deliberately excludes the peer-provided reason, which is untrusted
|
||||
// and may contain credentials. Cause remains available through errors.Unwrap.
|
||||
type CloseError struct {
|
||||
Code int
|
||||
Cause error
|
||||
}
|
||||
|
||||
func (e *CloseError) Error() string { return fmt.Sprintf("ws: connection closed (code %d)", e.Code) }
|
||||
func (e *CloseError) Unwrap() error { return e.Cause }
|
||||
|
||||
// HandshakeError exposes the HTTP status without putting a URL or response body
|
||||
// in the error text. Inspect Cause explicitly only when it is safe to do so.
|
||||
type HandshakeError struct {
|
||||
StatusCode int
|
||||
Cause error
|
||||
}
|
||||
|
||||
func (e *HandshakeError) Error() string {
|
||||
return fmt.Sprintf("ws: handshake failed (HTTP %d)", e.StatusCode)
|
||||
}
|
||||
func (e *HandshakeError) Unwrap() error { return e.Cause }
|
||||
|
||||
// OpError preserves the underlying cause without including its potentially
|
||||
// sensitive text in logs. Op is a fixed operation name, never a URL or payload.
|
||||
type OpError struct {
|
||||
Op string
|
||||
Cause error
|
||||
}
|
||||
|
||||
func (e *OpError) Error() string { return "ws: " + e.Op + " failed" }
|
||||
func (e *OpError) Unwrap() error { return e.Cause }
|
||||
Reference in New Issue
Block a user