2
0

fix reconnect

This commit is contained in:
Nikolay Pavlovich
2022-09-17 23:44:54 +03:00
parent 6166edecb5
commit 5e5189a468
+10 -5
View File
@@ -139,18 +139,19 @@ func (rc *RecConn) Shutdown(writeWait time.Duration) {
func (rc *RecConn) ReadMessage() (messageType int, message []byte, err error) { func (rc *RecConn) ReadMessage() (messageType int, message []byte, err error) {
err = ErrNotConnected err = ErrNotConnected
if rc.IsConnected() { if rc.IsConnected() {
messageType, message, err = rc.Conn.ReadMessage() conn := rc.getConn()
messageType, message, err = conn.ReadMessage()
if websocket.IsCloseError(err, websocket.CloseNormalClosure) { if websocket.IsCloseError(err, websocket.CloseNormalClosure) {
rc.Close() rc.Close()
return messageType, message, nil return messageType, message, nil
} }
if err != nil { if err != nil && conn == rc.getConn() {
rc.CloseAndReconnect() rc.CloseAndReconnect()
} }
}
if err == nil { if err == nil {
rc.getKeepAliveResponse().setLastDataResponse() rc.getKeepAliveResponse().setLastDataResponse()
} }
}
return return
} }
@@ -211,14 +212,18 @@ func (rc *RecConn) WriteJSON(v interface{}) error {
func (rc *RecConn) ReadJSON(v interface{}) error { func (rc *RecConn) ReadJSON(v interface{}) error {
err := ErrNotConnected err := ErrNotConnected
if rc.IsConnected() { if rc.IsConnected() {
err = rc.Conn.ReadJSON(v) conn := rc.getConn()
err = conn.ReadJSON(v)
if websocket.IsCloseError(err, websocket.CloseNormalClosure) { if websocket.IsCloseError(err, websocket.CloseNormalClosure) {
rc.Close() rc.Close()
return nil return nil
} }
if err != nil { if err != nil && conn == rc.getConn() {
rc.CloseAndReconnect() rc.CloseAndReconnect()
} }
if err == nil {
rc.getKeepAliveResponse().setLastDataResponse()
}
} }
return err return err