瀏覽代碼

Implement net.Error on timeout errors.

Fixes #10.
Gary Burd 12 年之前
父節點
當前提交
67d178946a
共有 2 個文件被更改,包括 13 次插入1 次删除
  1. 11 1
      conn.go
  2. 2 0
      conn_test.go

+ 11 - 1
conn.go

@@ -65,9 +65,19 @@ var (
 	ErrReadLimit = errors.New("websocket: read limit exceeded")
 )
 
+type websocketError struct {
+	msg       string
+	temporary bool
+	timeout   bool
+}
+
+func (e *websocketError) Error() string   { return e.msg }
+func (e *websocketError) Temporary() bool { return e.temporary }
+func (e *websocketError) Timeout() bool   { return e.timeout }
+
 var (
+	errWriteTimeout        = &websocketError{msg: "websocket: write timeout", timeout: true}
 	errBadWriteOpCode      = errors.New("websocket: bad write message type")
-	errWriteTimeout        = errors.New("websocket: write timeout")
 	errWriteClosed         = errors.New("websocket: write closed")
 	errInvalidControlFrame = errors.New("websocket: invalid control frame")
 )

+ 2 - 0
conn_test.go

@@ -15,6 +15,8 @@ import (
 	"time"
 )
 
+var timeoutErrImplementsNetError net.Error = errWriteTimeout
+
 type fakeNetConn struct {
 	io.Reader
 	io.Writer