diff --git a/.gitignore b/.gitignore index ae2ed59..6c45690 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .history /.idea +.vscode ls-lint \ No newline at end of file diff --git a/recws.go b/recws.go index 2e5b5b9..47f3e6d 100644 --- a/recws.go +++ b/recws.go @@ -139,17 +139,18 @@ func (rc *RecConn) Shutdown(writeWait time.Duration) { func (rc *RecConn) ReadMessage() (messageType int, message []byte, err error) { err = ErrNotConnected if rc.IsConnected() { - messageType, message, err = rc.Conn.ReadMessage() + conn := rc.getConn() + messageType, message, err = conn.ReadMessage() if websocket.IsCloseError(err, websocket.CloseNormalClosure) { rc.Close() return messageType, message, nil } - if err != nil { + if err != nil && conn == rc.getConn() { rc.CloseAndReconnect() } - } - if err == nil { - rc.getKeepAliveResponse().setLastDataResponse() + if err == nil { + rc.getKeepAliveResponse().setLastDataResponse() + } } return @@ -211,14 +212,18 @@ func (rc *RecConn) WriteJSON(v interface{}) error { func (rc *RecConn) ReadJSON(v interface{}) error { err := ErrNotConnected if rc.IsConnected() { - err = rc.Conn.ReadJSON(v) + conn := rc.getConn() + err = conn.ReadJSON(v) if websocket.IsCloseError(err, websocket.CloseNormalClosure) { rc.Close() return nil } - if err != nil { + if err != nil && conn == rc.getConn() { rc.CloseAndReconnect() } + if err == nil { + rc.getKeepAliveResponse().setLastDataResponse() + } } return err