websocket_error.go 645 B

1234567891011121314151617181920212223242526272829
  1. package helper
  2. import (
  3. "errors"
  4. "strings"
  5. "syscall"
  6. "github.com/gorilla/websocket"
  7. )
  8. // IsUnexpectedWebsocketError checks if the error is an unexpected websocket error
  9. func IsUnexpectedWebsocketError(err error) bool {
  10. if err == nil {
  11. return false
  12. }
  13. // ignore: write: broken pipe
  14. if errors.Is(err, syscall.EPIPE) {
  15. return false
  16. }
  17. // client closed error: *net.OpErr
  18. if strings.Contains(err.Error(), "An existing connection was forcibly closed by the remote host") {
  19. return false
  20. }
  21. return websocket.IsUnexpectedCloseError(err,
  22. websocket.CloseGoingAway,
  23. websocket.CloseNoStatusReceived,
  24. websocket.CloseNormalClosure)
  25. }